Как я могу использовать ImageMagick (с расширением php), чтобы установить прозрачный фон в белый цвет при преобразовании изображения из PNG в JPEG?
На момент написания статьи вы не указали, какое расширение вы используете, но если вы используете командную строку, команда будет:
convert image.png -background white -flatten -alpha off image.jpg
Дополнительную информацию можно найти в документации по использованию маскирования .
Например, используя IMagick, я думаю, вы могли бы сделать это следующим образом:
(полностью непроверенный, никогда не использовался IMagick и не установлен для тестирования)
$image = new IMagick('image.png'); $flattened = new IMagick(); $flattened->newImage($image->getImageWidth(), $image->getImageHeight(), new ImagickPixel("white")); $flattened->compositeImage($image, imagick::COMPOSITE_OVER, 0, 0); $flattened->setImageFormat("jpg"); $flattened->writeImage('image.jpg'); $image->clear(); $image->destroy(); $flattened->clear(); $flattened->destroy();
Если вы используете расширение Imagick:
<?php // load the source transparent png $i = new IMagick('image.png'); // set the background to white // you can also use 'rgb(255,255,255)' in place of 'white' $i->setImageBackgroundColor(new ImagickPixel('white')); // flattens multiple layers $i = $i->flattenImages(); // the output format $i->setImageFormat('jpg'); // save to disk $i->writeImage('image.jpg'); // and/or output directly // header('Content-Type: '.$i->getFormat()); // echo $i->getImageBlob(); // cleanup $i->clear(); $i->destroy();