使用Imagick裁剪两个透明PNG图像给出不同的结果

问题描述:

我裁剪两个PNG文件时有不同的结果。使用使用Imagick裁剪两个透明PNG图像给出不同的结果

Imagick版本convert -version

  • 版本:ImageMagick的6.6.5-10 2010-11-26 Q16
  • 版权所有:版权所有(C)1999-2010 ImageMagick的工作室LLC
  • 特点:OpenMP的

两个文件使用identify

  • works.png PNG 1218x610 1218x610+0+0 8-bit DirectClass 755KB 0.000u 0:00.000
  • doesntwork.png PNG 70x70 70x70+0+0 8-bit DirectClass 1.64KB 0.000u 0:00.000

我使用这个命令:

convert <original>.png -crop 50x50+0+0 <target>.png 

的问题是,works.png是100%正确的,而doesntwork.png是一个黑色的正方形。

两张原始图像看起来都是一样的 - 在windows 7上显示正确。

的图像:

works.png

enter image description here

doesntwork.png

enter image description here

+0

你可以发布图像,以便我们可以测试可能的解决方案吗?另外,我会推荐'识别--verbose'来获取更多的图像信息,特别注意色彩空间,因为我看到这会导致类似的问题。 – blahdiblah 2012-04-13 18:54:43

+0

我已将图像添加到原始帖子。 – 2012-04-16 08:52:50

+0

对不起,但是两个原始图像在某种意义上是相同的? – 2012-04-16 19:23:03

适用于我使用convert -version ImageMagick 6.4.0 04/17/08 Q16(这是“当前”版本cygwin下),通过Windows XP SP3上的cygwin运行。

这可能是您的特定版本ImageMagick中的一个错误。鲨鱼works.png是一个带有alpha(4个8位通道)的全彩色图像。 doesntwork.png是一个具有8位alpha值的1位黑白图像,阴影是通过改变alpha来完成的。在我看来,这似乎是一种非常罕见的格式,所以我可以想象一个错误会转化为转换代码。

您可能会尝试先将图像转换为真彩色。

在发布两个图像的情况下,这似乎是它可能的情况下,的工具做他们被告知的事情,而不是做什么。

在上面的鲨鱼图像上使用-crop 50x50+0+0会提供完全透明的50乘50图像,因为鲨鱼图像的左上角(+0+0)中的50乘50块像素是完全透明的。使用-crop 50x200+0+0也捕获了鲨鱼的尾巴。 -crop 50x50+950+250引人入胜。

所有这些都符合您的结果吗?

+0

鲨鱼工作正常,这是另一个不会收获。我想知道为什么鲨鱼会工作,而另一个则不行。我会在明天添加我的裁剪结果。 – 2012-04-16 22:47:22

+0

这两个张贴的图像在我的系统上使用ImageMagick 6.7.6-0 2012-03-26都很好。也许是升级的顺序,或者Imgur做了一些转换来解决问题(尽管“识别”信息仍然是一样的)。 – blahdiblah 2012-04-16 23:10:21