flattenImages()
на самом деле работает.
Но имейте в виду, что он не изменяет данный \Imagick()
объект , но возвращает новый :
$image = new \Imagick('transparent.png');
// Need to use the result of $image->flattenImages() here!
$image = $image->flattenImages();
$image->writeImage('opaque.jpg');
flattenImages()
по умолчанию используется цвет фона white
. Если вы хотите использовать другой цвет фона, вы должны установить его до загрузки изображения:
$image = new \Imagick();
// Needs to be called before the image is loaded!
$image->setbackgroundcolor('green');
$image->readimage('transparent.png');
$image = $image->flattenImages();
$image->writeImage('opaque.jpg');
Как правило, API Imagick очень разумен, когда дело доходит до порядка вызовов функций (точно так же как convert
и его параметров в командной строке), поэтому всегда проверяйте, правильный ли ваш порядок.
Удачи!
Редактировать апрель 2016 г .:
$image->flattenImages()
устарел и должен быть заменен на:
$image->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN)
Трудно найти точную информацию об этом, но, похоже, это относится к PHP> = 5.6.
Спасибо за подсказку!