【问题标题】:Preserving Aspect Ratio in Image::Magick's Thumbnail function保留图像中的纵横比::Magick 的缩略图功能
【发布时间】: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);

【问题讨论】:

    标签: perl imagemagick


    【解决方案1】:

    geometry参数下有综合大小操作的选项

    scale% 高度和宽度都按指定百分比缩放。 ... 宽度给定宽度,高度自动选择以保持纵横比。 ... widthxheight 给定高度和宽度的最大值,保留纵横比。 widthxheight^ 给定宽度和高度的最小值,保留纵横比。 宽x高!强调给出宽度和高度,忽略原始纵横比。 ...

    这是来自ImageMagickcommand-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 给定高度和宽度的最大值,保留纵横比。

    更通用的ResizeScale 方法也有geometry 参数。

    【讨论】:

    • 非常感谢!我从缩略图调用本身中删除了尺寸,并将其切换到另一个 SetAttribute 并设置为 widthxheight 。成功了!
    • @TimothyR.Butler 太好了。我发现 Perl 的文档对此有点不清楚(在 SetAttribute 下看不到相关选项/参数)
    • 是的,Perl 模块的文档肯定有一些不足之处!再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2015-07-16
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多