【问题标题】:Convert tiff (with path) to png and remove background (transparent) - with Imagemagick in PHP将 tiff(带路径)转换为 png 并删除背景(透明) - 在 PHP 中使用 Imagemagick
【发布时间】:2014-09-10 11:20:00
【问题描述】:

所以,我有很多 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)

【问题讨论】:

  • “损坏的图像”的意思就是——你得到了随机的垃圾而不是可识别的图像,有或没有背景?
  • 它被剪裁了(透明背景),但有一些黑色像素线或/和主对象也有一些被移除的边缘

标签: php shell imagemagick png tiff


【解决方案1】:

试了几个小时才找到。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢!我记得已经使用过这段代码了——但是在我的托管环境中,ImageMagick 版本已经很老了,并且产生了错误的结果。由于无法访问 php.ini 文件,我切换到命令行解决方案。
    猜你喜欢
    • 2019-01-14
    • 2011-07-13
    • 2014-02-07
    • 2015-02-16
    • 2011-12-04
    • 2012-05-31
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    相关资源
    最近更新 更多