如何用perl Image :: Magick剪切图像的透明部分?

时间:2012-12-17 20:56:56

标签: perl imagemagick imagemagick-convert

我有一个PNG图像,convert来自PDF文件。除内容部分外,此PNG为字母大小且透明。

我使用Image::Magick perl模块来操作图像(比如新手)。内容从28x28px开始,宽度不变。高度是可变的。

如何剪切图像的透明部分并仅获取内容?或者如何使用Image :: Magick找到最后一条不透明的行?

1 个答案:

答案 0 :(得分:4)

您想要使用Trim()方法,然后重置页面属性。修剪将裁剪掉所有与角点像素完全相同的图像(在您的情况下为透明)。重置页面属性将确保您的内容在新的较小图像画布上正确对齐。

以下是有关ImageMagick文档的Trim()的更多信息:http://www.imagemagick.org/script/command-line-options.php#trim

这里是PerlMagick中有效的图像处理方法列表(虽然这里的文档有点稀疏):http://www.imagemagick.org/script/perl-magick.php#manipulate

以下内容应该为您解决问题:

use strict;
use Image::Magick;

my $in = $ARGV[0];
my $out = $ARGV[1];

my $transparent_png = Image::Magick->new;
$transparent_png->Read("$in");
$transparent_png->Trim();
$transparent_png->Set(page=>'0x0+0+0');
$transparent_png->Write("$out");