如何用ImageMagick重复透明PNG生成带透明度的指定尺寸图片
解决ImageMagick平铺透明PNG时丢失透明度的问题
问题描述
有一张带透明通道的PNG图片(red50x5.png),执行以下命令生成1200x1200的平铺图片时,结果丢失了原图片的透明度:
/usr/bin/convert -size 1200x1200 tile:'red50x5.png' 'resulting_image.png'
原图片的信息如下:
info PNG 50x5 50x5+0+0 8-bit sRGB 2c 311B 0.000u 0:00.000
解决方案
方法1:创建透明画布后平铺
使用xc:none生成带alpha通道的透明画布,再用原图片填充平铺,命令如下:
/usr/bin/convert -size 1200x1200 xc:none -tile red50x5.png -draw "color 0,0 reset" resulting_image.png
xc:none:创建1200x1200的全透明画布,保留alpha通道-tile red50x5.png:指定用于平铺的原始透明图片-draw "color 0,0 reset":用tile图案填充整个画布,同时保留透明信息
方法2:使用montage命令平铺
通过计算行列数(1200÷50=24列,1200÷5=240行),用montage直接平铺并保留透明度:
/usr/bin/montage -tile 24x240 -geometry +0+0 red50x5.png resulting_image.png
-tile 24x240:指定平铺的行列数量-geometry +0+0:取消图片间的间距,保证最终尺寸正好为1200x1200
原因说明
原命令丢失透明度是因为-size 1200x1200 tile:...默认创建不带alpha通道的sRGB画布,原图片的透明信息无法被保留。必须显式创建带alpha通道的画布,或使用支持保留透明的平铺方式。
内容的提问来源于stack exchange,提问作者Arto Avag
相关产品推荐
相关产品推荐

