将PNG图像预先修剪为alpha并获得偏移

时间:2013-05-17 20:50:46

标签: image image-processing imagemagick

我有一组图像,所有图像都大小相同,以PNG格式保存。

稍后,在我的程序中,我将使用这些图像并将它们叠加在一起。

然而,这些图像中的每一个的非透明部分实际上非常小。因此,为了提高性能,最好使用修剪为alpha的图像,以便将每个图像裁剪为包含所有非alpha像素的最小矩形。

当将每个图像绘制在另一个图像的顶部时,我只需要绘制带有偏移的裁剪图像。

有很多的图片,所以不应该手动完成 - 也不是我想在我的程序第一次启动时做的事情。

换句话说,我正在寻找一些可以有效处理这个问题的批处理作业。

ImageMagick有“修剪”,它正在寻找我正在寻找的东西,除了我需要捕获偏移量。然后,此偏移需要以某种方式伴随图像 - 通过将偏移写入文件,或将其放入文件名(例如,如果偏移量为34x99,overlay123.png可能会变为overlay123-34x99.png)。

这项工作的最佳工具是什么?我可以编写这样一个例程来手动完成它,但似乎应该有一些我可以使用的命令行实用程序,或者用一些脚本语言在几行中执行它。

1 个答案:

答案 0 :(得分:4)

从简单的修剪命令开始:

convert test.png -trim +repage test2.png

您可以添加-identify运算符:

convert test.png -trim -identify +repage test2.png

此命令的输出将为:

test.png PNG 800x600=>566x483 800x600+161+52 8-bit DirectClass 0.000u 0:00.004

其中800x600是原始图像的大小,566x483是结果图像的大小,+ 161 + 52是包含图像的非alpha部分的矩形的偏移量。使用后者的信息,你应该能够构建一个小脚本来实现你的目标。