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

时间:2014-07-19 11:32:27

标签: php shell imagemagick png tiff

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

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

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

convert a.tif -clip -resize 800x600 a.png
convert a.tif -clip -alpha transparent +clip -channel A -resize 800x600 a.png

也是这个PHP代码:

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

here 是一个示例tif文件

也许有人知道如何解决这个问题。

修改

最好的结果会返回: convert test.tif -clip -alpha transparent 1.png

但是它会保存背景而不是剪切的对象。 (png

2 个答案:

答案 0 :(得分:4)

在尝试了几个小时后找到它。

convert can.tif -alpha transparent -clip -alpha opaque result.png

所以它必须用例如shell_exec - 我没有找到任何可能的解决方案来使用Imagick-PHP类。

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

答案 1 :(得分:0)

PHP imagick扩展的解决方案是复制同一组命令:

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