Преобразуйте PNG в JPG и установите прозрачный фон в белый цвет с помощью ImageMagick и PHP

Как я могу использовать 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();