我需要创建一个480w×360h像素“画布”内的图像。Perl - Image :: Magick创建特定大小的图像“画布”,同时保持原始图像的纵横比?
我确实从我的远程url创建了一些图像,没有问题,从stackoverflow的帮助。但是,我希望保持图像的高宽比,但最终结果是480x360 ..因此,需要使用“画布”或边框,然后使用裁剪技术(从我读过的),但是,我似乎无法实现。
以下是我有:
#!/usr/bin/perl
use Image::Resize;
use Image::Magick;
use strict;
my $new = 'path/to/image/image.jpg';
my $somewords = 'Some words';
my $imageurl='http://myimageurl.com/image.jpg';
my $p = new Image::Magick;
$p->Read("$imageurl");
my ($origw, $origh) = $p->Get('width', 'height');
#### correct size images get processed here with just annotation ########
if (($origw == 480) && ($origh == 360)){
system("convert $imageurl -fill '#FFFFFF' -font Candice -pointsize 12 -undercolor '#00000080' -gravity SouthEast -annotate +1+1 '$somewords' $new");
}
#### process images of incorrect original size WHERE I AM STUCK #######
if (($origw != 480) && ($origh != 360)){
system("convert $imageurl $new");
system("convert $imageurl -resize 480x360\! -fill '#FFFFFF' -font Candice -pointsize 14 -undercolor '#00000080' -gravity SouthWest -annotate +1+1 '$somewords' $new");
}
我需要的是这样的:
的480 * 360
A “画布” 的大小从URL减少原始图像纠正宽高比为480w或360h,并将其放置在480x360画布的中间。
我读过某处,没有提供任何示例,我可以调整原始图像的大小,同时保持宽高比以正确的高度或宽度,无论哪一个允许图像最大,然后将其他参数(h或w)除以2,然后根据它添加边框,然后裁剪大小。迷惑了我“他+双曲棍球棒”。
我很想弄明白这一点。我甚至不确定这里的问题是否清楚,值得提问。
看起来像调整大小,同时保持宽高比,同时创建一个固定的输出图像是非常困难的!搜索时间没有帮助我。
我赞扬那位提供详细解决方案的人。谢谢。
谢谢你,我想今天这个......我将分享我的结果... – DulcimerDude 2011-01-26 12:38:26