【问题标题】:ImageMagick resize by percentage and limitImageMagick 按百分比和限制调整大小
【发布时间】:2015-10-21 20:10:21
【问题描述】:

我正在尝试使用 ImageMagick 调整各种图像的大小。 我要求使用单个命令完成此操作,并且不支持额外的语言。

我想将低于特定宽度的所有图像调整为 115%(或等效:将所有图像调整为特定大小,同时将最大放大限制为原始图像的 115%)。

我尝试混合使用不同的选项,但似乎不受支持。

这可能吗?


更新:

我使用distort 运算符作为可能的解决方案:

convert in.jpg +distort srt "%[fx:(w<1600)?1.15:1] 0" out.jpg

但当图像失真 >1600 像素时,它仍然会执行操作并使用稍微不同的像素数重写图像。

【问题讨论】:

    标签: imagemagick image-resizing


    【解决方案1】:

    使用现有系统的命令和convert 来评估高级逻辑可能更容易。

    例如,我将利用 test 实用程序

    test $(identify -format "%[fx:(w<1600)?1:0]" in.jpg) -eq 1 && \
         convert in.jpg -resize 115% out.jpg
    

    ImageMagick 7 中,将引入选项-exit,因此如果条件不满足,则可以终止ImageMagick 命令。

    更新

    Affine distortion 可能是更好的方法。因为下面的仿射矩阵不会改变图像

    | 1 0 0 |
    | 0 1 0 |
    | 0 0 1 |
    

    但以下内容将调整 115%

    | 1.15 0    0 |
    | 0    1.15 0 |
    | 0    0    1 |
    
    convert in.jpg +distort AffineProjection \
            '%[fx:(w<1600)?1.15:1],0,0,%[fx:(w<1600)?1.15:1],0,0' \
            +repage out3.jpg
    

    【讨论】:

    • 谢谢,但遗憾的是添加系统命令不是一个选项。不过我会尝试仿射失真。
    猜你喜欢
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多