使用PHP中的Imagemagick将tiff(带路径)转换为png并删除背景(透明)

使用PHP中的Imagemagick将tiff(带路径)转换为png并删除背景(透明),php,shell,imagemagick,png,tiff,Php,Shell,Imagemagick,Png,Tiff,所以,我有很多tiff文件,我想生成它们的缩略图。此缩略图必须具有透明背景 所有TIFF都有:白色背景和沿对象的路径(例如一罐可乐),并保存为CMYK 所以我尝试了很多convert命令(比如phpImagick::clipPath),但都没有很好的效果(背景仍然存在/图像损坏) 还有以下php代码: <?php $image = new Imagick('a.tif'); $image->clipPath(); $image->setImageFormat('png'

所以,我有很多tiff文件,我想生成它们的缩略图。此缩略图必须具有透明背景

所有TIFF都有:白色背景和沿对象的路径(例如一罐可乐),并保存为CMYK

所以我尝试了很多
convert
命令(比如php
Imagick::clipPath
),但都没有很好的效果(背景仍然存在/图像损坏)

还有以下php代码:

<?php
$image = new Imagick('a.tif');
$image->clipPath();    
$image->setImageFormat('png');    
$image->thumbnailImage(800, 600, true);
$image->writeImage('a.png');

在尝试数小时后找到了它

convert can.tif-alpha transparent-clip-alpha不透明结果.png

因此,它必须使用例如
shell\u exec
来执行-我没有找到任何可能的解决方案来使用Imagick PHP类来执行它


问题在于旧的imagemagick版本以及错误的命令属性顺序。

使用PHP imagick扩展的解决方案是复制相同的命令集:

$imagick->setImageAlphaChannel(\Imagick::ALPHACHANNEL_TRANSPARENT);
$imagick->clipImage();
$imagick->setImageAlphaChannel(\Imagick::ALPHACHANNEL_OPAQUE);

“损坏的图像”的确切意思是——你得到的是随机垃圾,而不是可识别的图像,有没有背景?它被剪裁(透明背景)但是有一些黑色像素行或/和主对象也有一些删除的边非常感谢!我记得已经使用了此代码-但在我的宿主环境中,ImageMagick版本非常旧,生成的结果不正确。由于无法访问php.ini文件,我切换到命令行解决方案。
$imagick->setImageAlphaChannel(\Imagick::ALPHACHANNEL_TRANSPARENT);
$imagick->clipImage();
$imagick->setImageAlphaChannel(\Imagick::ALPHACHANNEL_OPAQUE);