保留图像中的纵横比::Magick 的缩略图功能
Posted
技术标签:
【中文标题】保留图像中的纵横比::Magick 的缩略图功能【英文标题】:Preserving Aspect Ratio in Image::Magick's Thumbnail function 【发布时间】:2020-03-29 00:46:08 【问题描述】:我正在尝试使用 Perl Image::Magick 库来使用 ImageMagick 的缩略图功能。我读到的所有内容都表明,ImageMagick 在给定宽度和高度时会保留纵横比,几乎就像 CSS 用语中的 max-width 和 max-height 一样。然而,在实践中,它似乎将图像干扰到我给出的尺寸中,而不考虑纵横比。我错过了我需要打开的标志吗?我的印象是保留纵横比是默认行为。
my $image = Image::Magick->new;
$image->BlobToImage($imageData);
$image->SetAttribute(quality => 80);
$image->SetAttribute(compression => 'JPEG');
$image->Thumbnail(width => $thumbnailWidth, height => $thumbnailHeight);
【问题讨论】:
【参考方案1】:geometry
参数下有综合大小操作的选项
这是来自ImageMagick
的command-line use 页面的Image Geometry 部分。 Perl module's documentation 没有提供这种级别的 API 详细信息这一事实通常意味着它的绑定实现了其中的大部分(全部?),并且被通用文档所涵盖。
命令行示例,将图像缩小到20%
perl -MImage::Magick -we'$f = shift // die "Pass image filename\n";
$img = Image::Magick->new;
$img->Read($f);
$img->Thumbnail(geometry => "20%");
$img->Write(filename => "scaled_$f")'
根据问题中的示例判断,您似乎需要参数值
widthxheight 给定高度和宽度的最大值,保留纵横比。更通用的Resize
和Scale
方法也有geometry
参数。
【讨论】:
非常感谢!我从缩略图调用本身中删除了尺寸,并将其切换到另一个SetAttribute
并设置为 widthxheight 。成功了!
@TimothyR.Butler 太好了。我发现 Perl 的文档对此有点不清楚(在 SetAttribute
下看不到相关选项/参数)
是的,Perl 模块的文档肯定有一些不足之处!再次感谢。以上是关于保留图像中的纵横比::Magick 的缩略图功能的主要内容,如果未能解决你的问题,请参考以下文章