У меня была ситуация, когда я пытался заменить прозрачный фон белым (но сохранить как png). Пробовал несколько разных методов (включая setImageAlphaChannel с setImageBackgroundColor). Комбинируя использование OP CompositImage, я придумал это (надеюсь, полезно для кого-то еще):

я есть изображение PNG с прозрачным фоном, и я хочу преобразовать его в изображение JPG с белым фоном.

Код в основном это:

$image = new Imagick('transparent.png');
$image->writeImage('opaque.jpg');

Но это создает черный фон JPG. Я боролся с худшей документацией, когда-либо пытавшейся найти способ конвертировать прозрачный в белый, но безрезультатно.

редактироватьНу, я попробовал идею Марка Б. и заставил ее работать.

$image = new Imagick('transparent.png');
$white = new Imagick();

$white->newImage($image->getImageWidth(), $image->getImageHeight(), "white");
$white->compositeimage($image, Imagick::COMPOSITE_OVER, 0, 0);
$white->writeImage('opaque.jpg');

$image->destroy();
$white->destroy();

Проблема сейчас в том, что скрипт всегда вызывает segfault.

Ответы на вопрос(10)

Ваш ответ на вопрос