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

Дерево руководства
Глава 410 · После первых изображений Gmagick
Gmagick: фон, рамка и повторяемое оформление карточки
Отделить настройки цвета от действия над растром и выпустить карточку с единым оформлением.
Передать сохранённый цвет фона в поворот
Все наклонённые карточки магазина должны иметь одинаковый фон. Цвет удобно сохранить как настройку изображения и затем передать действию, которое его использует. Показываем оба состояния: сразу после установки рисунок прежний; после поворота выбранный фон виден в новых углах.


<?php
$image = new Gmagick(__DIR__ . '/product.ppm');
$image->setImageBackgroundColor('#e5a74a');
$background = $image->getImageBackgroundColor();
$image->rotateImage($background, 15.0);
$image->setImageFormat('PNG');
$image->writeImage(__DIR__ . '/brand-background.png');setImageBackgroundColor сохраняет цвет. getImageBackgroundColor() читает его и возвращает GmagickPixel — отдельный объект, представляющий цвет. Переменная $background хранит этот объект, а rotateImage принимает его первым аргументом. Это не значение углового пикселя исходника. В полной программе getColor(true) получает массив r/g/b для проверки выбранных 229,167,74; массив нужен диагностике, поворот использует сам GmagickPixel.
<?php
declare(strict_types=1);
require __DIR__ . '/gm-fixture.php';
gmRestore();
$image = new Gmagick(__DIR__.'/product.ppm');
$result = $image->setImageBackgroundColor('#e5a74a');
$background = $image->getImageBackgroundColor();
$color = $background->getColor(true);
$image->setImageFormat('PNG');
$image->setImageDepth(8);
$image->writeImage(__DIR__.'/gm97-background-setting.png');
$image->rotateImage($background,15.0);
$errors = ['color'=>gmTry(fn()=>(new Gmagick(__DIR__.'/product.ppm'))->setImageBackgroundColor('not-a-color'))];
$image->setImageFormat('PNG');
$image->setImageDepth(8);
$image->writeImage(__DIR__.'/gm97-background-rotated.png');
gmReport('gm97-background-rotate',["__construct", "setimagebackgroundcolor", "getimagebackgroundcolor", "getcolor", "setimageformat", "setimagedepth", "writeimage", "rotateimage"],["gm97-background-setting.png", "gm97-background-rotated.png"],
['same_object'=>$result===$image,'pixel_object'=>$background instanceof GmagickPixel,'color_rejected'=>$errors['color']['class']==='GmagickPixelException','geometry_background_setting'=>gmInspect('gm97-background-setting.png')['width']===320&&gmInspect('gm97-background-setting.png')['height']===200,'geometry_background_rotated'=>gmInspect('gm97-background-rotated.png')['width']===361&&gmInspect('gm97-background-rotated.png')['height']===276],
$errors ?? [], ['background_color'=>$color]);
echo "gm97-background-setting.png 320x200 gm97-background-rotated.png 361x276\n";
Ожидаемый результат
gm97-background-setting.png 320x200 gm97-background-rotated.png 361x276
Скачайте все файлы примера в одну папку. php example.php восстановит собственные PPM из .b64, сохранит PNG и metrics.json. Восстановление и проверки вынесены в неизменённый gm-fixture.php; преобразования видны непосредственно в example.php. Требуется расширение Gmagick. Проверенный стенд: PHP 8.3.6 / Gmagick 2.0.6RC1 / GraphicsMagick 1.3.42 Q16.
Вывод успешного запуска
gm97-background-setting.png 320x200 gm97-background-rotated.png 361x276
Строка с неизвестным названием цвета даёт GmagickPixelException ещё до полезного преобразования. Свойство фона не является командой заливки: чтобы поменять существующие пиксели, нужна соответствующая операция. Здесь используются непрозрачные PNG и явный RGB; результат не заявляется проверкой прозрачности для произвольного JPEG или альфа-канала.
Применить сохранённый цвет плоской рамки
Каталогу нужны стабильные поля вокруг фотографии: по 12 пикселей с боков и по 8 сверху и снизу. Сохранённый цвет рамки можно переиспользовать, а светлую альтернативу сделать явным строковым аргументом. Оба результата показывают, как толщина каждой стороны влияет на итоговые размеры.



<?php
$image = new Gmagick(__DIR__ . '/product.ppm');
$image->setImageBorderColor(new GmagickPixel('#244f65'));
$border = $image->getImageBorderColor();
$image->borderImage($border, 12, 8);
$image->setImageFormat('PNG');
$image->writeImage(__DIR__ . '/bordered.png');new GmagickPixel создаёт объект цвета, который передаётся setter. Getter возвращает GmagickPixel, затем borderImage добавляет настоящий растр рамки. 12 означает толщину каждой из двух вертикальных сторон, 8 — каждой горизонтальной. Поэтому 320+12+12=344, 200+8+8=216. Вызов setImageBorderColor сам по себе не создаёт рамку; её делает следующая операция.
<?php
declare(strict_types=1);
require __DIR__ . '/gm-fixture.php';
gmRestore();
$image = new Gmagick(__DIR__.'/product.ppm');
$result = $image->setImageBorderColor(new GmagickPixel('#244f65'));
$border = $image->getImageBorderColor();
$color = $border->getColor(true);
$image->borderImage($border,12,8);
$light = new Gmagick(__DIR__.'/product.ppm');
$light->borderImage('#ffffff',6,10);
$image->setImageFormat('PNG');
$image->setImageDepth(8);
$image->writeImage(__DIR__.'/gm97-border-blue.png');
$light->setImageFormat('PNG');
$light->setImageDepth(8);
$light->writeImage(__DIR__.'/gm97-border-light.png');
gmReport('gm97-border-style',["__construct", "setimagebordercolor", "getimagebordercolor", "getcolor", "borderimage", "setimageformat", "setimagedepth", "writeimage"],["gm97-border-blue.png", "gm97-border-light.png"],
['same_object'=>$result===$image,'pixel_object'=>$border instanceof GmagickPixel,'geometry_border_blue'=>gmInspect('gm97-border-blue.png')['width']===344&&gmInspect('gm97-border-blue.png')['height']===216,'geometry_border_light'=>gmInspect('gm97-border-light.png')['width']===332&&gmInspect('gm97-border-light.png')['height']===220],
$errors ?? [], ['border_color'=>$color]);
echo "gm97-border-blue.png 344x216 gm97-border-light.png 332x220\n";
Ожидаемый результат
gm97-border-blue.png 344x216 gm97-border-light.png 332x220
Скачайте все файлы примера в одну папку. php example.php восстановит собственные PPM из .b64, сохранит PNG и metrics.json. Восстановление и проверки вынесены в неизменённый gm-fixture.php; преобразования видны непосредственно в example.php. Требуется расширение Gmagick. Проверенный стенд: PHP 8.3.6 / Gmagick 2.0.6RC1 / GraphicsMagick 1.3.42 Q16.
Вывод успешного запуска
gm97-border-blue.png 344x216 gm97-border-light.png 332x220
Если рамка нужна лишь на текущей веб-странице, CSS может оставить исходный файл без дополнительных пикселей. Если рамка должна попасть в скачиваемое изображение, она должна быть частью растра. Getter читает настройку, а не ищет цвет уже нарисованного края стороннего снимка.
Оформить объёмную рамку с двумя фасками
Для галерейного вида требуется не однотонное поле, а светлая и тёмная фаски. frameImage создаёт такую имитацию объёма. На увеличенном холсте видны внутренний и внешний переходы; толщина рамки и толщина фасок — разные параметры.


<?php
$image = new Gmagick(__DIR__ . '/product.ppm');
$color = new GmagickPixel('#244f65');
$image->frameImage($color, 16, 12, 2, 4);
$image->setImageFormat('PNG');
$image->writeImage(__DIR__ . '/framed.png');После объекта цвета идут 16 пикселей вертикальной стороны, 12 горизонтальной, 2 внутренней фаски и 4 внешней. Получается 352×224. Метод строит свет и тень на основе цвета, поэтому пиксели фасок отличаются от #244f65. Возвращённый Gmagick — тот же объект с изменённым изображением, а не имя готового файла.
<?php
declare(strict_types=1);
require __DIR__ . '/gm-fixture.php';
gmRestore();
$image = new Gmagick(__DIR__.'/product.ppm');
$result = $image->frameImage(new GmagickPixel('#244f65'),16,12,2,4);
$errors = ['bevel'=>gmTry(fn()=>(new Gmagick(__DIR__.'/product.ppm'))->frameImage('#244f65',2,2,4,4))];
$image->setImageFormat('PNG');
$image->setImageDepth(8);
$image->writeImage(__DIR__.'/gm97-frame.png');
gmReport('gm97-frame-gallery',["__construct", "frameimage", "setimageformat", "setimagedepth", "writeimage"],["gm97-frame.png"],
['same_object'=>$result===$image,'bevel_rejected'=>$errors['bevel']['class']==='GmagickException','geometry_frame'=>gmInspect('gm97-frame.png')['width']===352&&gmInspect('gm97-frame.png')['height']===224],
$errors ?? [], []);
echo "gm97-frame.png 352x224\n";
Ожидаемый результат
gm97-frame.png 352x224
Скачайте все файлы примера в одну папку. php example.php восстановит собственные PPM из .b64, сохранит PNG и metrics.json. Восстановление и проверки вынесены в неизменённый gm-fixture.php; преобразования видны непосредственно в example.php. Требуется расширение Gmagick. Проверенный стенд: PHP 8.3.6 / Gmagick 2.0.6RC1 / GraphicsMagick 1.3.42 Q16.
Вывод успешного запуска
gm97-frame.png 352x224
Фаскам требуется место. Проверенный ошибочный вызов с рамкой 2×2 и фасками 4 и 4 дал GmagickException. Следующий пример делает правило явным до вызова библиотеки. Для обычного однотонного поля без эффекта объёма проще borderImage.
Собрать стиль карточки в возвращающую копию функцию
Теперь стиль состоит из связанных настроек: белый фон, синяя рамка, наклон и две фаски. Функция принимает исходник и настройки, работает с копией, возвращает готовую карточку. Так вызывающий код выбирает цвета и толщину, а порядок оформления записан в одном месте.


<?php
$image = new Gmagick(__DIR__ . '/product.ppm');
$card = clone $image;
$card->shearImage('#ffffff', 12.0, 0.0);
$card->frameImage('#244f65', 12, 12, 2, 4);
$card->setImageFormat('PNG');
$card->writeImage(__DIR__ . '/styled.png');Сначала наклон создаёт 341×200, затем рамка прибавляет по 12 с каждой стороны: 365×224. В полной функции параметры background и border становятся GmagickPixel. Фон устанавливается перед наклоном; цвет рамки — после shearImage, непосредственно перед frameImage. Это существенно: в проверенной сборке наклон заменил прежнюю настройку рамки своим цветом фона. Поэтому настройка, нужная следующему действию, задаётся уже на результате наклона. Проверка padding<6 сравнивает толщину с суммой фасок 2+4. return возвращает копию в $card, исходный $image остаётся 320×200.
<?php
declare(strict_types=1);
require __DIR__ . '/gm-fixture.php';
gmRestore();
$image = new Gmagick(__DIR__.'/product.ppm');
function styledCatalogCard(Gmagick $source,string $background,string $border,int $padding): Gmagick {
if ($padding<6) { throw new InvalidArgumentException('Padding must allow both bevels'); }
$card = clone $source;
$card->setImageBackgroundColor(new GmagickPixel($background));
$card->shearImage($card->getImageBackgroundColor(),12.0,0.0);
$card->setImageBorderColor(new GmagickPixel($border));
$card->frameImage($card->getImageBorderColor(),$padding,$padding,2,4);
return $card;
}
$card = styledCatalogCard($image,'#ffffff','#244f65',12);
$errors = ['padding'=>gmTry(fn()=>styledCatalogCard($image,'#ffffff','#244f65',2))];
$card->setImageFormat('PNG');
$card->setImageDepth(8);
$card->writeImage(__DIR__.'/gm97-styled-card.png');
// Проверяем сохранённую плоскую часть рамки, а не только настройку объекта.
$frameSample = new Gmagick(__DIR__.'/gm97-styled-card.png');
$frameSample->cropImage(1,1,182,8);
$framePixel = $frameSample->getImageHistogram()[0];
$frameRgb = $framePixel->getColor(true);
gmReport('gm97-style-function',["__construct", "setimagebackgroundcolor", "shearimage", "getimagebackgroundcolor", "setimagebordercolor", "frameimage", "getimagebordercolor", "setimageformat", "setimagedepth", "writeimage", "cropimage", "getimagehistogram", "getcolor"],["gm97-styled-card.png"],
['source_unchanged'=>$image->getImageWidth()===320&&$image->getImageHeight()===200,'new_object'=>$card!==$image,'padding_rejected'=>$errors['padding']['class']==='InvalidArgumentException','saved_frame_rgb'=>$frameRgb['r']===36&&$frameRgb['g']===79&&$frameRgb['b']===101,'geometry_styled_card'=>gmInspect('gm97-styled-card.png')['width']===365&&gmInspect('gm97-styled-card.png')['height']===224],
$errors ?? [], ['frame_sample'=>['x'=>182,'y'=>8,'rgb'=>$frameRgb]]);
echo "gm97-styled-card.png 365x224\n";
Ожидаемый результат
gm97-styled-card.png 365x224
Скачайте все файлы примера в одну папку. php example.php восстановит собственные PPM из .b64, сохранит PNG и metrics.json. Восстановление и проверки вынесены в неизменённый gm-fixture.php; преобразования видны непосредственно в example.php. Требуется расширение Gmagick. Проверенный стенд: PHP 8.3.6 / Gmagick 2.0.6RC1 / GraphicsMagick 1.3.42 Q16.
Вывод успешного запуска
gm97-styled-card.png 365x224
Внешнее имя файла остаётся обязанностью вызывающего кода: функция оформляет изображение, а не выбирает место публикации. Это позволяет проверить результат и сохранить его под нужным именем. Более сложная функция не требуется для одного наклона; она полезна, когда один и тот же порядок оформления повторяется для нескольких карточек.
Подготовить вариант узора, убрать полосы и добавить поля
Завершим блок вариантом полосы каталога: сдвинем собственный рисунок, удалим технические полосы, подготовим размер и добавим одинаковые поля. Здесь последовательность изменяет смысл каждой следующей координаты и стороны; её можно проследить по конкретным числам.


<?php
$image = new Gmagick(__DIR__ . '/product.ppm');
$image->rollImage(48, -20);
$image->chopImage(32, 20, 48, 20);
$image->scaleImage(160, 0);
$image->borderImage('#244f65', 8, 6);
$image->setImageFormat('PNG');
$image->writeImage(__DIR__ . '/catalog-strip.png');roll сохраняет 320×200, chop уменьшает до 288×180, scale даёт 160×100, border добавляет 16 по ширине и 12 по высоте: 176×112. В полном примере цвет хранится через setImageBorderColor и читается getImageBorderColor. Все эффекты вызываются непосредственно в программе; помощник только восстанавливает вход и записывает проверку результата.
<?php
declare(strict_types=1);
require __DIR__ . '/gm-fixture.php';
gmRestore();
$image = new Gmagick(__DIR__.'/product.ppm');
$image->rollImage(48,-20);
$image->chopImage(32,20,48,20);
$image->scaleImage(160,0);
$image->setImageBorderColor('#244f65');
$border = $image->getImageBorderColor();
$image->borderImage($border,8,6);
$image->setImageFormat('PNG');
$image->setImageDepth(8);
$image->writeImage(__DIR__.'/gm97-layout.png');
gmReport('gm97-catalog-layout',["__construct", "rollimage", "chopimage", "scaleimage", "setimagebordercolor", "getimagebordercolor", "borderimage", "setimageformat", "setimagedepth", "writeimage"],["gm97-layout.png"],
['border_object'=>$border instanceof GmagickPixel,'geometry_layout'=>gmInspect('gm97-layout.png')['width']===176&&gmInspect('gm97-layout.png')['height']===112],
$errors ?? [], []);
echo "gm97-layout.png 176x112\n";
Ожидаемый результат
gm97-layout.png 176x112
Скачайте все файлы примера в одну папку. php example.php восстановит собственные PPM из .b64, сохранит PNG и metrics.json. Восстановление и проверки вынесены в неизменённый gm-fixture.php; преобразования видны непосредственно в example.php. Требуется расширение Gmagick. Проверенный стенд: PHP 8.3.6 / Gmagick 2.0.6RC1 / GraphicsMagick 1.3.42 Q16.
Вывод успешного запуска
gm97-layout.png 176x112
Это оформление узора, а не универсальное исправление любого товара: удалять полосы на важной фотографии нельзя без предметного решения. В сервисе сохраните исходники, выберите допустимые размеры и ограничения ресурсов, а готовые файлы проверяйте после записи. Примеры работают с одним локальным изображением; поведение многокадровых файлов требует отдельного маршрута.
Упражнение: добавить к 160×100 по 4 пикселя со всех сторон. Ответ: borderImage($color,4,4) и размер 168×108. Почему setImageBackgroundColor не сделал рисунок однотонным? Ответ: он сохранил свойство, а не залил существующие пиксели. Почему getImageBorderColor не определит цвет чужого края? Ответ: он читает настройку, не измеряет растр. Следующий шаг — выбор формата и проверенное сохранение.
После геометрии можно перейти к настройке тона изображения, затем к контрактам экспорта: готовая карточка должна сохранить выбранный размер и получить предсказуемый формат файла.
Практический вопрос, из которого вырос сценарий
Trim image background but leave padding in Graphicsmagick: Нужно удалить лишний фон и затем оставить заданное поле, сохранив выбранный цвет вместо жёстко заданного белого. Разделяем чтение сохранённой настройки и определение цвета пикселя чужого файла: getImageBorderColor не выбирает цвет края автоматически. В своём каталоге цвет известен заранее, поэтому сохраняем его setter, читаем getter и явно передаём в borderImage. Толщина добавляется с обеих сторон; случайное поле во входном файле не считается свойством border color.
Функции и методы этой темы
Откройте карточку, чтобы увидеть договор функции, примеры, ограничения и связанные инструменты.
Gmagick::borderimageДобавить плоское цветное поле
PECL gmagick >= Unknown · gmagick
Gmagick::borderimage(GmagickPixel $color, int $width, int $height): GmagickДобавить плоское цветное поле. color — GmagickPixel либо строка цвета; строковый вариант прямо предусмотрен описанием PHP.net, хотя краткая сигнатура показывает GmagickPixel. width — толщина слева и справа, height — сверху и снизу. При входе W×H размер станет (W+2×width)×(H+2×height): 320×200 с 12 и 8 даёт 344×216. Вызов добавляет пиксели к растру; это не CSS-рамка и не линия, нарисованная поверх существующих пикселей. Переданный цвет используется явно; для сохранённой настройки передайте getImageBorderColor().
Gmagick::borderimage(GmagickPixel $color, int $width, int $height): Gmagick| Параметр | Тип и обязательность | Значение |
|---|---|---|
color | GmagickPixel; обязательный | Объект GmagickPixel или строка цвета согласно описанию PHP.net. |
width | int; обязательный | Толщина поля на каждой вертикальной стороне. |
height | int; обязательный | Толщина поля на каждой горизонтальной стороне. |
Результат: Gmagick с результатом операции. Проверенные преобразования меняют текущий объект и возвращают его же; для независимого варианта сначала создайте clone.
Ошибка по официальному контракту: GmagickException. Ошибочный PHP-тип может дать TypeError до обработки изображения; при разборе некорректного цвета возможен GmagickPixelException. Не печатайте успешный результат после перехвата ошибки, если файл не получен. Требуется PECL Gmagick; PHP.net помечает нижнюю границу версии как Unknown, поэтому конкретную минимальную версию здесь не придумываем.
Два разных применения: Убрать ровное поле вокруг изображения; Применить сохранённый цвет плоской рамки.
Связанный метод: Gmagick::frameimage.
Gmagick::frameimageДобавить рамку с внутренней и внешней фасками
PECL gmagick >= Unknown · gmagick
Gmagick::frameimage(GmagickPixel $color, int $width, int $height, int $inner_bevel, int $outer_bevel): GmagickДобавить рамку с внутренней и внешней фасками. width и height задают толщину вертикальных и горизонтальных сторон; inner_bevel — ширину внутренней фаски, outer_bevel — внешней. Фаски имитируют свет и тень, поэтому вся рамка не обязана иметь один RGB. Сигнатура PHP.net показывает GmagickPixel, а пояснение color также упоминает float; проверенный runtime принимает GmagickPixel и строку цвета, произвольные числа здесь не обещаются. Вариант (16,12,2,4) дал 352×224. Слишком узкая рамка (2,2,4,4) вызвала GmagickException; функция стиля заранее проверяет место для суммы фасок.
Gmagick::frameimage(GmagickPixel $color, int $width, int $height, int $inner_bevel, int $outer_bevel): Gmagick| Параметр | Тип и обязательность | Значение |
|---|---|---|
color | GmagickPixel; обязательный | Цвет рамки; расхождение формулировки float и сигнатуры пояснено ниже. |
width | int; обязательный | Толщина вертикальных сторон. |
height | int; обязательный | Толщина горизонтальных сторон. |
inner_bevel | int; обязательный | Ширина внутренней фаски. |
outer_bevel | int; обязательный | Ширина внешней фаски. |
Результат: Gmagick с результатом операции. Проверенные преобразования меняют текущий объект и возвращают его же; для независимого варианта сначала создайте clone.
Ошибка по официальному контракту: GmagickException. Ошибочный PHP-тип может дать TypeError до обработки изображения; при разборе некорректного цвета возможен GmagickPixelException. Не печатайте успешный результат после перехвата ошибки, если файл не получен. Требуется PECL Gmagick; PHP.net помечает нижнюю границу версии как Unknown, поэтому конкретную минимальную версию здесь не придумываем.
Два разных применения: Оформить объёмную рамку с двумя фасками; Собрать стиль карточки в возвращающую копию функцию.
Связанный метод: Gmagick::borderimage.
Gmagick::getimagebackgroundcolorПрочитать настройку фона как объект цвета
PECL gmagick >= Unknown · gmagick
Gmagick::getimagebackgroundcolor(): GmagickPixelПрочитать настройку фона как объект цвета. Аргументов нет. Возвращается GmagickPixel, настроенный на цвет фона изображения. Это объект цвета, который можно передать rotateImage или shearImage; строку или массив RGB при необходимости получают методом самого GmagickPixel. Значение свойства не является измерением углового пикселя и не вычисляет преобладающий цвет фотографии. В примере явно заданный #e5a74a прочитан как RGB 229,167,74 и использован в повороте.
Gmagick::getimagebackgroundcolor(): GmagickPixelПараметров нет: пустые скобки означают вызов без аргументов.
Результат: GmagickPixel с сохранённым цветом.
Ошибка по официальному контракту: GmagickException. Ошибочный PHP-тип может дать TypeError до обработки изображения; при разборе некорректного цвета возможен GmagickPixelException. Не печатайте успешный результат после перехвата ошибки, если файл не получен. Требуется PECL Gmagick; PHP.net помечает нижнюю границу версии как Unknown, поэтому конкретную минимальную версию здесь не придумываем.
Два разных применения: Передать сохранённый цвет фона в поворот; Собрать стиль карточки в возвращающую копию функцию.
Связанный метод: Gmagick::setimagebackgroundcolor.
Gmagick::getimagebordercolorПолучить сохранённый цвет рамки
PECL gmagick >= Unknown · gmagick
Gmagick::getimagebordercolor(): GmagickPixelПолучить сохранённый цвет рамки. Аргументов нет. Результат — GmagickPixel с цветом рамки текущего изображения. Это чтение свойства, а не поиск цвета внешней полосы среди пикселей. На нашей карточке после setImageBorderColor(#244f65) прочитан RGB 36,79,101. Передача этого объекта в borderImage или frameImage связывает настройку с действием. Для восстановления цвета уже существующего поля входного файла потребовалось бы отдельно исследовать его пиксели.
Gmagick::getimagebordercolor(): GmagickPixelПараметров нет: пустые скобки означают вызов без аргументов.
Результат: GmagickPixel с сохранённым цветом.
Ошибка по официальному контракту: GmagickException. Ошибочный PHP-тип может дать TypeError до обработки изображения; при разборе некорректного цвета возможен GmagickPixelException. Не печатайте успешный результат после перехвата ошибки, если файл не получен. Требуется PECL Gmagick; PHP.net помечает нижнюю границу версии как Unknown, поэтому конкретную минимальную версию здесь не придумываем.
Два разных применения: Применить сохранённый цвет плоской рамки; Собрать стиль карточки в возвращающую копию функцию.
Связанный метод: Gmagick::setimagebordercolor.
Gmagick::setimagebackgroundcolorСохранить цвет фона изображения
PECL gmagick >= Unknown · gmagick
Gmagick::setimagebackgroundcolor(GmagickPixel $color): GmagickСохранить цвет фона изображения. color — объект GmagickPixel по краткой сигнатуре PHP.net; строка цвета также поддержана проверенной реализацией. Метод меняет свойство текущего изображения и возвращает Gmagick. Он не перекрашивает существующий растр. В уроке рисунок остаётся прежним до rotateImage, которому явно передаётся сохранённый цвет. Неверная строка цвета дала GmagickPixelException; общая страница PHP.net также указывает GmagickException при ошибке операции. Настройка цвета и выбор действия, использующего этот цвет, — два разных шага.
Gmagick::setimagebackgroundcolor(GmagickPixel $color): Gmagick| Параметр | Тип и обязательность | Значение |
|---|---|---|
color | GmagickPixel; обязательный | Настройка фона; GmagickPixel либо проверенная строка цвета. |
Результат: Gmagick с результатом операции. Проверенные преобразования меняют текущий объект и возвращают его же; для независимого варианта сначала создайте clone.
Ошибка по официальному контракту: GmagickException. Ошибочный PHP-тип может дать TypeError до обработки изображения; при разборе некорректного цвета возможен GmagickPixelException. Не печатайте успешный результат после перехвата ошибки, если файл не получен. Требуется PECL Gmagick; PHP.net помечает нижнюю границу версии как Unknown, поэтому конкретную минимальную версию здесь не придумываем.
Два разных применения: Передать сохранённый цвет фона в поворот; Собрать стиль карточки в возвращающую копию функцию.
Связанный метод: Gmagick::getimagebackgroundcolor.
Gmagick::setimagebordercolorСохранить настройку цвета рамки
PECL gmagick >= Unknown · gmagick
Gmagick::setimagebordercolor(GmagickPixel $color): GmagickСохранить настройку цвета рамки. color — GmagickPixel в краткой сигнатуре; фактически проверены и объект, и строка цвета. Возвращается Gmagick. Этот вызов сохраняет свойство, но не добавляет поля. Затем getImageBorderColor() передаёт выбранный цвет в borderImage или frameImage. Так функция хранит связанные настройки на своей копии изображения, а исходный объект остаётся доступен вызывающему коду. Нельзя считать, что установка свойства сама увеличила размер растра.
Gmagick::setimagebordercolor(GmagickPixel $color): Gmagick| Параметр | Тип и обязательность | Значение |
|---|---|---|
color | GmagickPixel; обязательный | Настройка рамки; GmagickPixel либо проверенная строка цвета. |
Результат: Gmagick с результатом операции. Проверенные преобразования меняют текущий объект и возвращают его же; для независимого варианта сначала создайте clone.
Ошибка по официальному контракту: GmagickException. Ошибочный PHP-тип может дать TypeError до обработки изображения; при разборе некорректного цвета возможен GmagickPixelException. Не печатайте успешный результат после перехвата ошибки, если файл не получен. Требуется PECL Gmagick; PHP.net помечает нижнюю границу версии как Unknown, поэтому конкретную минимальную версию здесь не придумываем.
Два разных применения: Применить сохранённый цвет плоской рамки; Собрать стиль карточки в возвращающую копию функцию.
Связанный метод: Gmagick::getimagebordercolor.
Код и руководство с собой
Скачайте самостоятельные примеры с исходными данными, инструкциями и ожидаемыми результатами. Примеры HTTP и фрагменты для проекта помечены отдельно: им нужно указанное окружение.
Код не исполняется на сайте. Скачайте нужный пример и запускайте его в своём локальном окружении.
Материалы сверены 2026-10-12. Примеры и объяснения написаны для этого руководства; источники и обсуждения доступны в каждой главе.


