【问题标题】:How to Resize a .tif whilst retaining channel properties (transparency)如何在保留通道属性(透明度)的同时调整 .tif 的大小
【发布时间】:2019-01-30 13:35:11
【问题描述】:

目前我正在使用 ImageMagick 版本 6.7.2-7 的 CentOs Unix 服务器上运行此命令。

convert Test.tif -channel All -separate -resize 50% -background none -alpha copy -combine Test10.tif

它正在做我需要它做的一切——但它为每个通道添加了一个白色背景,如下所示: the test file before and after the command as shown in Photoshop CS4

我尝试了很多不同的 alpha 背景设置等,但我无法让它保持 RGB 通道的透明度。 This is the test file if you want to check it out

我不知道它是否需要我运行此命令并指定配置文件 - 它非常接近正确 - 这可能非常简单,但我找不到任何人提到 .tif 的这个特定问题?

提前致谢。

更新

Outcome After the first suggestion by fmw42 - 在 Windows 7 专业版上运行:ImageMagick 7.0.8-25 Q16 x64

【问题讨论】:

  • 您为测试文件提供的文件是白色 PNG(不透明)而不是 TIF。请发布 TIF 文件的链接。
  • @fmw42 - 这将是 StackOverflows 尝试处理透明 .tif ;) urbanwarfarestudios.co.uk/Test.tif

标签: php tiff imagemagick-convert


【解决方案1】:

这似乎在 Imagemagick 6.9.10.25 Q16 Mac OSX 中对我有用

convert -quiet \( test.tif[0] -channel alpha -negate +channel \) test.tif[1] -background none -layers merge -resize 50% test_result.tif


http://www.fmwconcepts.com/misc_tests/tif_proc/test_resize.tif

问题在于 Imagemagick 无法尽可能干净地处理 TIF 文件中的背景透明度。在 Photoshop 中,您有一个具有背景透明度的图层。但是 Imagemagick 看到了两层。第一个具有透明度(但极性错误,需要反转)。它是全尺寸的。但第二层也包含透明度,不是第一层的全尺寸。所以必须否定第一层,使用 -layers merge 以正确的偏移量将第二层合成到第一层,然后调整大小。 Imagemagick 引用从索引 0 开始的层,如 [0]。

Windows 语法略有不同(去掉 \s):

convert -quiet ( test.tif[0] -channel alpha -negate +channel ) test.tif[1] -background none -layers merge -resize 50% test_result.tif


如果在 .bat 文件中,则需要将 % 加倍为 %%。

【讨论】:

  • 正如你在 Mac 上所做的那样,我在我的 Windows 7 机器上进行了尝试:版本:ImageMagick 7.0.8-25 Q16 x64 2019-01-28 我已经上传了你的命令的结果 - 文件是除了现在所有通道上的背景现在都是黑色的,并且当所有通道在 Photoshop 中处于活动状态时显示为金色而不是白色,这是否有意义?为了比较,我在 Windows 上运行的命令给出了相同的结果。此命令是否仅适用于特定顺序的通道?
  • 当我打开你的文件时 - 它与我运行你的命令时相同,黑色和金色显示所有通道都处于活动状态?
  • 对不起,我不明白。当我在 Photoshop 中打开我的处理结果时,它看起来很好 - 就像您在 Photoshop 中打开时的输入一样。 Windows 语法与我的 Unix 语法略有不同。我在上面的帖子中添加了等效的 Windows 命令。
  • 您的原始图像同时具有背景透明度和 Alpha 通道。 Imagemagick 不能同时处理两者。如果我这样做,我会得到两个略有不同的结果:convert -quiet \( test.tif[0] -channel rgba -evaluate set 0 \) test.tif[1] -background none -layers merge -resize 50% x.tifconvert -quiet \( test.tif[0] -channel alpha -negate +channel \) test.tif[1] -background none -layers merge -resize 50% x2.tif
  • 您可以在使用tiff:alpha=associated|unassociated|unspecified 编写输出时选择使用 Alpha 通道或背景透明度。但您不能同时指定两者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2011-03-29
  • 1970-01-01
  • 2016-07-08
  • 2011-06-21
  • 2011-06-05
  • 1970-01-01
相关资源
最近更新 更多