perl - 保留图像中的纵横比::Magick 的缩略图功能
问题描述
我正在尝试使用 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);
解决方案
geometry
参数下有综合尺寸操作选项
scale% 高度和宽度都按指定百分比缩放。 ... 宽度给定宽度,高度自动选择以保持纵横比。 ... widthxheight 给定高度和宽度的最大值,保留纵横比。 widthxheight^ 给定宽度和高度的最小值,保留纵横比。 宽x高!强调给出宽度和高度,忽略原始纵横比。 ...
这是来自命令行使用页面的图像几何部分。Perl 模块的文档没有给出这个级别的 API 细节的事实通常意味着它的绑定实现了大多数(全部?)这些,并且被通用文档所涵盖。ImageMagick
一个命令行示例,将图像缩小到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
参数。
推荐阅读
- javascript - 修复在画布中的位置而不会失去响应能力
- c - 无法使用 getsockname() 打印出服务器套接字的特定地址
- python - 提高套接字传输的速度
- r - R - 创建函数:函数在更新系统和 R 后未找到变量
- python - 如何在不同的初始条件下运行张量流优化?
- html - 在悬停时反转覆盖css
- windows - 批处理脚本在 IF DO 循环中检查文件中的字符串
- python-3.x - 为什么 Python 不接受以 0 开头的整数作为有效代码?
- sql-server - SQL Server 2012 Group By 与单个查询中的值
- angular - 如何在角度组件中使用离子组件