【发布时间】:2020-03-07 03:20:12
【问题描述】:
我试图弄清楚如何使用Image::Resize Perl 模块来缩小PNG 图像。以下代码确实工作:
my $image = Image::Resize->new($read_path);
my $gd = $image->resize(1000,1000);
open (DISPLAY,">$write_path") || die "Cant write $write_path, Reason: $!";
binmode DISPLAY;
if ($read_path =~ /\.jpg$/i) {
print DISPLAY $gd->jpeg();
} elsif ($read_path =~ /\.gif$/i) {
print DISPLAY $gd->gif();
} elsif ($read_path =~ /\.png$/i) {
print DISPLAY $gd->png();
}
close DISPLAY;
但是,结果不是我想要的(当您转换透明 PNG 时,缩放版本有黑色背景)
缩放:
如何告诉它在图像上放置白色背景?我查看了手册页,但没有看到任何有用的信息:
http://search.cpan.org/dist/Image-Resize/Resize.pm
谢谢!
更新:对于任何感兴趣的人,我最终所做的只是使用 convert 将它们从 .png 转换为 .jpg;
convert "$read_path" -background white -flatten "$path/$filename"
在这种情况下实际上效果更好,因为我们不需要透明度(而且 jpg 的大小要小得多)
【问题讨论】:
-
既然你得到了一个GD::Image,你就可以使用它的方法来检查和改变事情。先看看透明度是否设置正确,然后在打印之前如何使其呈现为白色。
标签: perl