Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php imagick将PNG转换为jpg_Php_Png_Jpeg_Imagick - Fatal编程技术网

php imagick将PNG转换为jpg

php imagick将PNG转换为jpg,php,png,jpeg,imagick,Php,Png,Jpeg,Imagick,上面的不工作,给了我一个黑色的图像。当你这样做的时候 $image = "[...]"; //binary string containing PNG image $file = fopen('image.tmp', 'wb'); fputs($file, $image); fclose($file); $image = new Imagick('PNG:image.tmp'); $image->thumbnailImage($width, $height); $image->set

上面的不工作,给了我一个黑色的图像。当你这样做的时候

$image = "[...]"; //binary string containing PNG image
$file = fopen('image.tmp', 'wb');
fputs($file, $image);
fclose($file);
$image = new Imagick('PNG:image.tmp');
$image->thumbnailImage($width, $height);
$image->setImageFormat('jpg');
$image->setCompressionQuality(97);
$image->writeImage('image.jpg');
一切又好了。我认为它必须使用透明背景,而JPG格式中没有这种背景。有人能帮忙解决这个问题吗(imagick没有很好的文档记录,所以我不知道如何帮助自己)。

尝试在
$image=new imagick('PNG:image.tmp')之后添加

您可以使用将默认背景色设置为黑色以外的颜色。保存到JPG时,PNG透明度将替换为背景色

编辑:像这样使用它:

[...]
$image->setImageFormat('png');
$image->setCompressionQuality(97);
$image->writeImage('image.png');
找到了一个解决方案:

$img->setBackgroundColor(new ImagickPixel('#FFFFFF'));

将透明png转换为jpg的另一种方法,如中所述:

随着时间的推移,
flattimages()
已被弃用。
不要使用上面的行:

$im = new Imagick('image.png');
$im->setImageBackgroundColor('white');

$im->flattenImages(); // This does not do anything.
$im = $im->flattenImages(); // Use this instead.

$im->setImageFormat('jpg');
$im->writeImage('image.jpg');

PHP致命错误:未捕获异常“ImagickException”,消息为“提供的参数无效”
,使用“#ffffff”不会导致失败,但也没有帮助
setImageBackgroundColor
不起作用您需要传递一个ImagickPixel对象,而不是一个颜色字符串,如果您在调用
new Imagick()
后刚刚添加了Imagick
setBackgroundColor
。但这似乎没有任何效果。我使用的是PHP5.3.6、ImageMagick 6.7.0、Imagick 3.1.0。调用
exec(“convert png.png-resize 500x400-background white-flatte png_small.jpg”)
非常有效,但为什么不在PHP中使用
$image->setBackgroundColor(新的ImagickPixel('#FFFFFF')$图像->平面图像()?这在处理PDF时也非常有用,因为
展平图像
方法会将页面重置为最后一页。。。谢谢@rabudde!
$im = new Imagick('image.png');
$im->setImageBackgroundColor('white');

$im->flattenImages(); // This does not do anything.
$im = $im->flattenImages(); // Use this instead.

$im->setImageFormat('jpg');
$im->writeImage('image.jpg');
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);