PHP: полный мануал с примерами, функциями и ООП
Практический мануал PHP: от переменных и читаемого кода до безопасных форм, интеграций, базы данных и ООП на примере магазина. Учебный маршрут, поиск функций, подробные примеры, разбор ошибок и исходники для скачивания.

Дерево руководства
Глава 429 · После первых изображений, файлов и объектов
Gmagick: имена изображения и настоящий путь файла
Прочитать вход, отличить имя последовательности от текущего кадра и сохранить квитанцию реального файла.
Открыть файл методом read и сохранить превью
Сервис превью получает файл с диска и должен сохранить доступную браузеру копию. Начнём с собственной цветной мишени 320×200: полосы показывают цветные границы, градиент — плавные тона, чёрно-белый участок — мелкие детали. Путь данных здесь простой: encoding.ppm → объект Gmagick → preview.png. Чтение не является художественным фильтром, поэтому рисунок сохраняется.

$image = new Gmagick();
$image->read(__DIR__ . "/encoding.ppm");
$loaded = $image->getImageFilename();
$image->setImageFormat("PNG");
$image->writeImage(__DIR__ . "/preview.png");new Gmagick создаёт объект; read получает строковый путь и читает изображение. __DIR__ — папка текущей программы, точка соединяет её с именем файла. Стрелка -> вызывает метод у объекта. Метод read возвращает тот же Gmagick, а не содержимое файла строкой. getImageFilename читает имя текущего изображения. После явного writeImage оно в проверенной версии меняется на путь записанного файла, поэтому исходное имя сохраняем до записи.
<?php
declare(strict_types=1);
require __DIR__.'/gm100-export-fixture.php';
gmRestore();
$image=new Gmagick();$returned=$image->read(__DIR__.'/encoding.ppm');
$loadedName=basename($image->getImageFilename());$signature=$image->getImageSignature();
$image->setImageDepth(8);$image->setImageFormat('PNG');$image->writeImage(__DIR__.'/gm100-export-read-preview.png');
$afterName=basename($image->getImageFilename());
gmReport('gm100-export-read',["gmagick.read", "gmagick.getimagefilename"],["gm100-export-read-preview.png"],['same_object'=>$returned===$image,'input_name'=>$loadedName==="encoding.ppm",'explicit_output_name'=>$afterName==="gm100-export-read-preview.png",'pixels_kept'=>$signature===$image->getImageSignature()],$errors??[],['loaded_basename'=>$loadedName,'written_basename'=>$afterName],[]);
echo "read: input=encoding.ppm output=preview.png same-object=yes\n";
Ожидаемый результат
read: input=encoding.ppm output=preview.png same-object=yes
Распакуйте архив и выполните php example.php. Вложенные .b64 содержат все входы; helper проверяет SHA256 и восстанавливает PPM. gmPng сохраняет копию в PNG8. gmJpegHeader читает SOF0/SOF2 и коэффициенты компонентов из настоящего JPEG, gmPngInterlace читает IHDR. metrics.json содержит результаты и проверки. JPEG/PNG и квитанции появятся после выполнения; исходные файлы не берутся из внешней папки.
Полная программа создаёт PNG и проверяет исходное имя, новый путь и сохранность пикселей. Упражнение: исходник лежит рядом с программой, но её запустили из другой папки. Решение: использовать __DIR__, а не полагаться на текущий рабочий каталог процесса. Если файл не существует или декодер не может прочитать данные, обрабатывайте GmagickException; один setter имени ничего не загрузит.
Опора для первых шагов: первое изображение Gmagick, путь и файл, объект и метод.
Как выбирать текущий кадр: навигация по последовательности.
Связанные шаги: имена и путь записи, кодирование JPEG/PNG, окружение и рабочий объект, качество, метаданные и глубина файла.
Задать имя последовательности без переименования файла
У задания может быть своё плановое имя, а у загруженного кадра — имя исходного файла. Эти две строки хранятся отдельно. В примере planned-batch.png относится к объекту последовательности, encoding.ppm — к текущему изображению. На странице остаётся та же мишень: изменение имени не изменяет пиксели.

$image = new Gmagick();
$image->setFilename("planned-batch.png");
$image->readImage(__DIR__ . "/encoding.ppm");
$sequenceName = $image->getFilename();
$frameName = $image->getImageFilename();setFilename по официальному контракту задаёт имя перед чтением или записью, getFilename возвращает имя последовательности. В свежем объекте нашего runtime оно пустое; после setter/readImage остаётся planned-batch.png. У текущего кадра getImageFilename возвращает путь encoding.ppm. Сам setFilename не создаёт файл planned-batch.png и не переименовывает существующий. Полная программа записывает preview отдельным явным путём.
<?php
declare(strict_types=1);
require __DIR__.'/gm100-export-fixture.php';
gmRestore();
$image=new Gmagick();$initial=$image->getFilename();$ret=$image->setFilename('planned-batch.png');
$planned=$image->getFilename();$image->readImage(__DIR__.'/encoding.ppm');
$frame=basename($image->getImageFilename());gmPng($image,'gm100-export-sequence-name-preview.png');
gmReport('gm100-export-sequence-name',["gmagick.setfilename", "gmagick.getfilename", "gmagick.getimagefilename"],["gm100-export-sequence-name-preview.png"],['initial_empty'=>$initial==="",'sequence_name_roundtrip'=>$ret===$image&&$planned==="planned-batch.png"&&$image->getFilename()===$planned,'frame_name_separate'=>$frame==="encoding.ppm",'no_implicit_file'=>!file_exists(__DIR__."/planned-batch.png")],$errors??[],[],[]);
echo "names: sequence=planned-batch.png frame=encoding.ppm setter-writes=no\n";
Ожидаемый результат
names: sequence=planned-batch.png frame=encoding.ppm setter-writes=no
Распакуйте архив и выполните php example.php. Вложенные .b64 содержат все входы; helper проверяет SHA256 и восстанавливает PPM. gmPng сохраняет копию в PNG8. gmJpegHeader читает SOF0/SOF2 и коэффициенты компонентов из настоящего JPEG, gmPngInterlace читает IHDR. metrics.json содержит результаты и проверки. JPEG/PNG и квитанции появятся после выполнения; исходные файлы не берутся из внешней папки.
Упражнение: хотите сохранить результат в папку exports. Решение: построить разрешённый путь и передать его writeImage. Не считать значение getFilename доказательством, что файл уже существует. Имена последовательности особенно полезно отличать от имён отдельных кадров при переходе к анимациям.
Как выбирать текущий кадр: навигация по последовательности.
Связанные шаги: имена и путь записи, кодирование JPEG/PNG, окружение и рабочий объект, качество, метаданные и глубина файла.
Изменить имя кадра, сохранив его пиксели
Дадим текущему изображению понятную внутреннюю метку catalog-frame.png. Этот setter меняет строку имени кадра, а не имя файла на диске. Поэтому после него мишень выглядит точно так же, encoding.ppm продолжает существовать, а catalog-frame.png сам не появляется.

$image = new Gmagick(__DIR__ . "/encoding.ppm");
$image->setImageFilename("catalog-frame.png");
$label = $image->getImageFilename();
echo $label;setImageFilename принимает обязательную строку и возвращает Gmagick. getImageFilename без аргументов читает имя текущего изображения; в многостраничном объекте это имя выбранного кадра. В полной программе фиксируется пиксельная подпись до setter, затем сравнивается после него. PNG-превью сохраняется из копии, чтобы демонстрационная запись не перезаписала имя исследуемого объекта.
<?php
declare(strict_types=1);
require __DIR__.'/gm100-export-fixture.php';
gmRestore();
$image=new Gmagick(__DIR__.'/encoding.ppm');$before=$image->getImageSignature();
$ret=$image->setImageFilename('catalog-frame.png');$name=$image->getImageFilename();
gmPng($image,'gm100-export-frame-name-preview.png');
gmReport('gm100-export-frame-name',["gmagick.setimagefilename", "gmagick.getimagefilename"],["gm100-export-frame-name-preview.png"],['frame_name_roundtrip'=>$ret===$image&&$name==="catalog-frame.png",'pixels_kept'=>$image->getImageSignature()===$before,'original_file_exists'=>file_exists(__DIR__."/encoding.ppm"),'not_renamed_on_disk'=>!file_exists(__DIR__."/catalog-frame.png")],$errors??[],[],[]);
echo "frame-name: catalog-frame.png pixels=same disk-rename=no\n";
Ожидаемый результат
frame-name: catalog-frame.png pixels=same disk-rename=no
Распакуйте архив и выполните php example.php. Вложенные .b64 содержат все входы; helper проверяет SHA256 и восстанавливает PPM. gmPng сохраняет копию в PNG8. gmJpegHeader читает SOF0/SOF2 и коэффициенты компонентов из настоящего JPEG, gmPngInterlace читает IHDR. metrics.json содержит результаты и проверки. JPEG/PNG и квитанции появятся после выполнения; исходные файлы не берутся из внешней папки.
Ожидаемая строка короткого примера — catalog-frame.png. Упражнение: переименовать файл на файловой системе. Решение: это другая операция над файлами; изменение image filename её не выполняет. Для конвейера сохраните исходную метку до экспорта, поскольку writeImage может изменить имя кадра на реальный путь результата.
Как выбирать текущий кадр: навигация по последовательности.
Связанные шаги: имена и путь записи, кодирование JPEG/PNG, окружение и рабочий объект, качество, метаданные и глубина файла.
Отделить план, имя кадра и реальный путь записи
Соберём три разных значения в одном задании: план batch-plan.png, метку кадра label-only.png и настоящий destination. Выходной PNG записывается только по последнему пути. После записи getFilename сохраняет план, а getImageFilename сообщает фактический выходной путь.

$image = new Gmagick();
$image->setFilename("batch-plan.png");
$image->read(__DIR__ . "/encoding.ppm");
$image->setImageFilename("label-only.png");
$image->setImageFormat("PNG");
$image->writeImage(__DIR__ . "/actual.png");Это модель «настройка последовательности → метка кадра → аргумент операции записи». Все три значения являются строками, но выполняют разные роли. Полная программа читает два getter до и после writeImage, проверяет наличие настоящего файла и отсутствие label-only.png. Для пути вывода здесь используется заданная программой папка; произвольное имя из формы не становится разрешением на запись куда угодно.
<?php
declare(strict_types=1);
require __DIR__.'/gm100-export-fixture.php';
gmRestore();
$image=new Gmagick();$image->setFilename('batch-plan.png');$image->read(__DIR__.'/encoding.ppm');
$image->setImageFilename('label-only.png');$beforeWrite=[$image->getFilename(),$image->getImageFilename()];
$destination=__DIR__.'/gm100-export-explicit-path-actual.png';$image->setImageDepth(8);$image->setImageFormat('PNG');$image->writeImage($destination);
$afterWrite=[$image->getFilename(),basename($image->getImageFilename())];
gmReport('gm100-export-explicit-path',["gmagick.read", "gmagick.setfilename", "gmagick.getfilename", "gmagick.setimagefilename", "gmagick.getimagefilename"],["gm100-export-explicit-path-actual.png"],['before_names'=>$beforeWrite===["batch-plan.png","label-only.png"],'sequence_kept'=>$afterWrite[0]==="batch-plan.png",'frame_updated_by_write'=>$afterWrite[1]==="gm100-export-explicit-path-actual.png",'real_file_written'=>is_file($destination),'label_file_absent'=>!file_exists(__DIR__."/label-only.png")],$errors??[],['before_write'=>$beforeWrite,'after_write'=>$afterWrite],[]);
echo "path: explicit-file=written sequence-name=kept frame-name=updated\n";
Ожидаемый результат
path: explicit-file=written sequence-name=kept frame-name=updated
Распакуйте архив и выполните php example.php. Вложенные .b64 содержат все входы; helper проверяет SHA256 и восстанавливает PPM. gmPng сохраняет копию в PNG8. gmJpegHeader читает SOF0/SOF2 и коэффициенты компонентов из настоящего JPEG, gmPngInterlace читает IHDR. metrics.json содержит результаты и проверки. JPEG/PNG и квитанции появятся после выполнения; исходные файлы не берутся из внешней папки.
Упражнение: в журнале нужны исходник и результат. Решение: сохранить getImageFilename до записи и отдельно зафиксировать путь destination после неё. Если читать только getter в самом конце, исходное значение может быть уже потеряно. Этот пример показывает поведение данной сборки явно, не полагаясь на название метода.
Как выбирать текущий кадр: навигация по последовательности.
Связанные шаги: имена и путь записи, кодирование JPEG/PNG, окружение и рабочий объект, качество, метаданные и глубина файла.
Показать ошибку чтения и выбрать известную замену
В задании отсутствует входной файл. Сервис может либо отклонить обработку, либо по отдельной договорённости выдать известную заглушку. Здесь выбирается собственная схема товара product.ppm. Это другая картинка; подпись результата не выдаёт её за восстановленную пропавшую мишень.

$image = new Gmagick();
try { $image->read(__DIR__ . "/missing-input.png"); }
catch (GmagickException $error) {
$image = new Gmagick();
$image->read(__DIR__ . "/product.ppm");
}try/catch отделяет операцию, которая может завершиться исключением, от решения сервиса. В реальном приложении такую замену разрешают только для подходящих ошибок и фиксируют причину в журнале; проблемы прав записи или нехватки ресурсов не следует скрывать произвольной картинкой. В полной программе отсутствующий файл заранее известен, ошибка сохраняется в metrics.json, а новый объект получает явную метку fallback-product.
<?php
declare(strict_types=1);
require __DIR__.'/gm100-export-fixture.php';
gmRestore();
$candidate=new Gmagick();$errors=['missing_input'=>gmTry(fn()=>$candidate->read(__DIR__.'/missing-input.png'))];
$replacement=new Gmagick();$replacement->read(__DIR__.'/product.ppm');
$replacement->setImageFilename('fallback-product');$label=$replacement->getImageFilename();
gmPng($replacement,'gm100-export-import-policy-replacement.png');
gmReport('gm100-export-import-policy',["gmagick.read", "gmagick.setimagefilename", "gmagick.getimagefilename"],["gm100-export-import-policy-replacement.png"],['failure_recorded'=>$errors["missing_input"]["ok"]===false,'replacement_label'=>$label==="fallback-product",'replacement_matches_input'=>$replacement->getImageSignature()===(new Gmagick(__DIR__."/product.ppm"))->getImageSignature()],$errors??[],[],[]);
echo "import: missing=caught replacement=explicit-product label=stored\n";
Ожидаемый результат
import: missing=caught replacement=explicit-product label=stored
Распакуйте архив и выполните php example.php. Вложенные .b64 содержат все входы; helper проверяет SHA256 и восстанавливает PPM. gmPng сохраняет копию в PNG8. gmJpegHeader читает SOF0/SOF2 и коэффициенты компонентов из настоящего JPEG, gmPngInterlace читает IHDR. metrics.json содержит результаты и проверки. JPEG/PNG и квитанции появятся после выполнения; исходные файлы не берутся из внешней папки.
Ожидается GmagickException для missing-input и сохранённая схема товара. Упражнение: клиент требует строго свой исходник. Решение: передать ошибку обработчику задания и не выполнять ветку замены. При повторном чтении используйте отдельный объект или осознанно очистите прежнюю последовательность, чтобы не смешивать входы.
Как выбирать текущий кадр: навигация по последовательности.
Связанные шаги: имена и путь записи, кодирование JPEG/PNG, окружение и рабочий объект, качество, метаданные и глубина файла.
Сохранить превью и квитанцию с настоящим именем
После записи нужен надёжный отчёт: какое имя планировалось, какая метка была у источника и какой файл действительно получен. Функция savePreview возвращает квитанцию с basename, размером и SHA256 результата. Видимый PNG и JSON относятся к одному действию записи.

$image = new Gmagick(__DIR__ . "/product.ppm");
$image->setFilename("catalog-job");
$image->setImageFilename("tea-original");
$receipt = savePreview($image, "preview.png");
echo $receipt["written_basename"];Функция полностью приведена ниже. Она сначала читает оба имени, затем проверяет разрешённую форму basename, задаёт PNG и пишет файл в папку примера. Небольшой preg_match допускает латинские строчные буквы, цифры и дефис перед .png; это политика нашего экспорта, а не правило Gmagick. После записи вычисляется хеш фактических байтов. Возвращаемый массив связывает метаданные задания с файлом, но сам по себе не заменяет запись.
<?php
declare(strict_types=1);
require __DIR__.'/gm100-export-fixture.php';
gmRestore();
function savePreview(Gmagick $image,string $basename):array {
if(!preg_match('/^[a-z0-9-]+\.png$/D',$basename))throw new InvalidArgumentException('Use a simple PNG basename');
$planned=$image->getFilename();$sourceLabel=$image->getImageFilename();
$image->setImageDepth(8);$image->setImageFormat('PNG');$path=__DIR__.'/'.$basename;$image->writeImage($path);
return ['planned_sequence'=>$planned,'source_label'=>$sourceLabel,'written_basename'=>basename($image->getImageFilename()),'sha256'=>hash_file('sha256',$path),'bytes'=>filesize($path)];
}
$image=new Gmagick(__DIR__.'/product.ppm');$image->setFilename('catalog-job');$image->setImageFilename('tea-original');
$receipt=savePreview($image,'gm100-export-receipt-preview.png');file_put_contents(__DIR__.'/gm100-export-receipt-receipt.json',json_encode($receipt,JSON_PRETTY_PRINT|JSON_THROW_ON_ERROR));
$errors=['invalid_name'=>gmTry(fn()=>savePreview($image,'../escape.png'))];
gmReport('gm100-export-receipt',["gmagick.setfilename", "gmagick.getfilename", "gmagick.setimagefilename", "gmagick.getimagefilename"],["gm100-export-receipt-preview.png"],['receipt_tracks_real_file'=>$receipt["written_basename"]==="gm100-export-receipt-preview.png"&&$receipt["bytes"]>0,'labels_kept_in_receipt'=>$receipt["planned_sequence"]==="catalog-job"&&$receipt["source_label"]==="tea-original"],$errors??[],$receipt,[]);
echo "receipt: real-file=bound planned-and-source-names=recorded invalid-name=rejected\n";
Ожидаемый результат
receipt: real-file=bound planned-and-source-names=recorded invalid-name=rejected
Распакуйте архив и выполните php example.php. Вложенные .b64 содержат все входы; helper проверяет SHA256 и восстанавливает PPM. gmPng сохраняет копию в PNG8. gmJpegHeader читает SOF0/SOF2 и коэффициенты компонентов из настоящего JPEG, gmPngInterlace читает IHDR. metrics.json содержит результаты и проверки. JPEG/PNG и квитанции появятся после выполнения; исходные файлы не берутся из внешней папки.
Упражнение: пользователь передал ../escape.png. Решение: функция отклоняет такое имя до writeImage. Для настоящего сервиса каталог назначения задаётся сервером, а публичное имя файла отделяется от внутренних абсолютных путей. Исходные и выходные имена не следует выводить посетителю как служебные пути операционной системы.
Синтаксис функции и проверки имени: параметры и return, регулярные выражения, исключения.
Как выбирать текущий кадр: навигация по последовательности.
Связанные шаги: имена и путь записи, кодирование JPEG/PNG, окружение и рабочий объект, качество, метаданные и глубина файла.
Функции и методы этой темы
Откройте карточку, чтобы увидеть договор функции, примеры, ограничения и связанные инструменты.
Gmagick::getfilenameПрочитать имя, связанное с последовательностью
PECL gmagick >= Unknown · gmagick
Gmagick::getfilename(): stringБез аргументов возвращает string с именем, связанным с последовательностью. В свежем объекте проверенной сборки это пустая строка; после setFilename значение сохраняется при чтении кадра и явной записи другим путём. Это не обязательно имя текущего кадра и не подтверждение существования файла на диске. Для журнала задания храните это значение как planned_sequence, а фактический выход — отдельно. Если нужен текущий кадр, используйте getImageFilename.
Gmagick::getfilename(): stringПараметров нет: вызов записывается с пустыми скобками.
Официальная ошибка — GmagickException. Дополнительно PHP проверяет типы аргументов; прикладные ограничения пути и пресета в наших функциях дают InvalidArgumentException до вызова библиотеки. Не смешивайте эти уровни проверки.
Два самостоятельных применения: Задать имя последовательности без переименования файла; Отделить план, имя кадра и реальный путь записи.
Отметка PHP.net: PECL gmagick >= Unknown. Unknown не сообщает известную минимальную версию. Наблюдения относятся к PHP 8.3.6/Gmagick 2.0.6RC1/GraphicsMagick 1.3.42 Q16; поведение экспортного кодера подтверждается реальными файлами.
Gmagick::getimagefilenameПолучить имя текущего изображения
PECL gmagick >= Unknown · gmagick
Gmagick::getimagefilename(): stringБез аргументов возвращает строку с именем конкретного изображения в последовательности, то есть текущего выбранного кадра. После read это путь источника; после setImageFilename — присвоенная метка. В нашей сборке явный writeImage меняет значение на выходной путь. Поэтому исходную метку для квитанции сохраняют до записи. Getter не возвращает содержимое файла и не гарантирует, что пользовательская метка существует на диске. Для пустого состояния не вызывайте методы кадра без обработки ошибки.
Gmagick::getimagefilename(): stringПараметров нет: вызов записывается с пустыми скобками.
Официальная ошибка — GmagickException. Дополнительно PHP проверяет типы аргументов; прикладные ограничения пути и пресета в наших функциях дают InvalidArgumentException до вызова библиотеки. Не смешивайте эти уровни проверки.
Два самостоятельных применения: Открыть файл методом read и сохранить превью; Изменить имя кадра, сохранив его пиксели.
Отметка PHP.net: PECL gmagick >= Unknown. Unknown не сообщает известную минимальную версию. Наблюдения относятся к PHP 8.3.6/Gmagick 2.0.6RC1/GraphicsMagick 1.3.42 Q16; поведение экспортного кодера подтверждается реальными файлами.
Gmagick::readПрочитать изображение по явному пути
PECL gmagick >= Unknown · gmagick
Gmagick::read(string $filename): GmagickЧитает изображение из обязательной строки filename и возвращает Gmagick. В нашем примере это тот же объект, а не массив пикселей или строка файла. __DIR__ привязывает относительный вход к папке программы. Имя, присвоенное setFilename или setImageFilename, само по себе чтение не выполняет. Для отсутствующего файла реально получен GmagickException. При повторном использовании объекта учитывайте, что он может хранить последовательность изображений; для независимого задания используйте новый объект или осознанную очистку. Успешный разбор формата и успешная запись результата — отдельные действия.
Gmagick::read(string $filename): Gmagick| Параметр | Тип и обязательность | Назначение |
|---|---|---|
| $filename | string; обязательный | Строковый путь к читаемому изображению. |
Официальная ошибка — GmagickException. Дополнительно PHP проверяет типы аргументов; прикладные ограничения пути и пресета в наших функциях дают InvalidArgumentException до вызова библиотеки. Не смешивайте эти уровни проверки.
Два самостоятельных применения: Открыть файл методом read и сохранить превью; Показать ошибку чтения и выбрать известную замену.
Отметка PHP.net: PECL gmagick >= Unknown. Unknown не сообщает известную минимальную версию. Наблюдения относятся к PHP 8.3.6/Gmagick 2.0.6RC1/GraphicsMagick 1.3.42 Q16; поведение экспортного кодера подтверждается реальными файлами.
Gmagick::setfilenameЗадать имя перед чтением или записью
PECL gmagick >= Unknown · gmagick
Gmagick::setfilename(string $filename): GmagickОбязательная строка filename задаёт имя перед чтением или записью; официальный результат — Gmagick. В примере getter подтверждает новое значение, но setter не создаёт и не переименовывает файл. На текущем runtime имя последовательности остаётся отдельным от имени прочитанного изображения. Чтобы запись была однозначной, наша прикладная функция передаёт назначение непосредственно в writeImage. Пользовательское имя нельзя без проверки считать разрешённым путём файловой системы.
Gmagick::setfilename(string $filename): Gmagick| Параметр | Тип и обязательность | Назначение |
|---|---|---|
| $filename | string; обязательный | Имя, связанное с последовательностью перед чтением/записью; само по себе не файловая операция. |
Официальная ошибка — GmagickException. Дополнительно PHP проверяет типы аргументов; прикладные ограничения пути и пресета в наших функциях дают InvalidArgumentException до вызова библиотеки. Не смешивайте эти уровни проверки.
Два самостоятельных применения: Задать имя последовательности без переименования файла; Отделить план, имя кадра и реальный путь записи.
Отметка PHP.net: PECL gmagick >= Unknown. Unknown не сообщает известную минимальную версию. Наблюдения относятся к PHP 8.3.6/Gmagick 2.0.6RC1/GraphicsMagick 1.3.42 Q16; поведение экспортного кодера подтверждается реальными файлами.
Gmagick::setimagefilenameЗадать имя конкретного кадра
PECL gmagick >= Unknown · gmagick
Gmagick::setimagefilename(string $filename): GmagickПринимает обязательную строку filename и возвращает Gmagick. Меняет имя текущего изображения в последовательности, сохраняя его пиксели. Это не операция rename на диске и не выбор другого кадра. Примеры проверяют неизменность пиксельной подписи и отсутствие автоматически созданного файла с именем метки. После явной записи текущее имя может измениться; журнал должен отдельно хранить исходную метку и фактическое назначение.
Gmagick::setimagefilename(string $filename): Gmagick| Параметр | Тип и обязательность | Назначение |
|---|---|---|
| $filename | string; обязательный | Имя текущего изображения в последовательности. |
Официальная ошибка — GmagickException. Дополнительно PHP проверяет типы аргументов; прикладные ограничения пути и пресета в наших функциях дают InvalidArgumentException до вызова библиотеки. Не смешивайте эти уровни проверки.
Два самостоятельных применения: Изменить имя кадра, сохранив его пиксели; Отделить план, имя кадра и реальный путь записи.
Отметка PHP.net: PECL gmagick >= Unknown. Unknown не сообщает известную минимальную версию. Наблюдения относятся к PHP 8.3.6/Gmagick 2.0.6RC1/GraphicsMagick 1.3.42 Q16; поведение экспортного кодера подтверждается реальными файлами.
Код и руководство с собой
Скачайте самостоятельные примеры с исходными данными, инструкциями и ожидаемыми результатами. Примеры HTTP и фрагменты для проекта помечены отдельно: им нужно указанное окружение.
Код не исполняется на сайте. Скачайте нужный пример и запускайте его в своём локальном окружении.
Материалы сверены 2026-10-12. Примеры и объяснения написаны для этого руководства; источники и обсуждения доступны в каждой главе.


