我该如何使用带有PHP扩展的ImageMagick将PNG图像转换为JPEG时设置透明背景为白色?
我该如何使用带有PHP扩展的ImageMagick将PNG图像转换为JPEG时设置透明背景为白色?
在撰写本文时,您尚未指定使用的扩展名,但如果您正在使用命令行,则命令将是:
convert image.png -background white -flatten -alpha off image.jpg
更多信息可以在Masking Usage documentation中找到。
例如,使用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 :: getWidth()
。不知道它是否适用于您。 - CappY<?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();
mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN)
http://php.net/manual/en/imagick.mergeimagelayers.php - tbleckert