ImageMagick:在图像上放置一个部分透明的瓦片

4
我有一张 wallpaper.jpg(大小为1920x1280)和一张半透明的 tile.gif(大小为16x16)。
在网站上,我希望将 tile.gif 作为 x 和 y 的重复覆盖在 wallpaper.jpg 上。
目前,我们使用 CSS 实现了这个叠加效果。我想节省一个请求并使用 ImageMagick 将(重复的)tile.png 与 wallpaper.jpg 合并。无论如何,wallpaper.jpg 已经通过 ImageMagick 生成了。
根据 -tile 选项文档 ,我想到了以下命令:
convert wallpaper.jpg -size 1920x1280 tile:tile.gif -compose over -composite result.jpg

然而,结果是一个填充了瓷砖的1920x1280 jpg,但没有壁纸透过来。相反,瓷砖的透明部分似乎是白色的。

文档说:

如果瓷砖图像部分透明,则需要指定“Over”“-compose”方法。

那么问题出在哪里呢?

我也尝试过使用-flatten而不是-composite...结果相同。

编辑:

我意识到还有另一个-tile选项文档。它似乎遵循重载的概念。不幸的是,我无法弄清楚如何正确使用它。
2个回答

2
这应该能解决问题:
convert wallpaper.jpg -background none -size 1920x1280 tile:tile.gif -composite result.jpg

你也可以添加-compose over,但这不应该有任何区别。


1

不确定是否有帮助,但您尝试将tile.gif转换为带有Alpha/Transparency的24位PNG文件了吗? - 划掉....

我找到了一些示例,但对完整的命令行不确定:

composite -tile tile.gif netscape: wallpaper.jpg

来源:http://www.imagemagick.org/Usage/compose/#tile


我也尝试过这个。即使瓷砖是带透明度的PNG格式,输出文件也是PNG格式,结果仍然是重复的瓷砖,而不是透明度。 - crispy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接