У меня была ситуация, когда я пытался заменить прозрачный фон белым (но сохранить как 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.