【问题标题】:ImageMagick change image width and heightImageMagick 改变图像的宽度和高度
【发布时间】:2014-12-21 00:40:12
【问题描述】:

我正在使用 ImageMagick 通过以下命令行选项调整图像分辨率

convert abc.png -set units PixelsPerInch -density 75 abc_a.png

我需要这个:如果任何图像的宽度超过 300OR 超过 100 高度,我想将其转换为宽度 300 宽度和 100 高度,并更改高于 dpi(即75dpi)。

谁能帮我解决这个问题?

【问题讨论】:

  • 您使用的是 Linux 还是 Windows?

标签: image imagemagick imagemagick-convert


【解决方案1】:

你不能同时控制-density和宽度加上高度同时!! p>

密度(或分辨率),在创建图像时,会自动将图像的大小调整为宽度和高度的特定像素数(否则会被忽略)。

密度(或分辨率)在显示图像时(例如在浏览器窗口中、HTML 页面中或 PDF 页面上)不会改变原始图像的尺寸:而是会放大或缩小图像上的相应视图。

当在图像的元数据中使用密度(或分辨率)时(并非每种文件格式都支持),它不会改变图像尺寸——它只是给显示软件一个提示,在什么缩放级别要显示的图像(并非每个图像查看器都支持)。


现在回答你的问题...

试试这个命令:

 convert abc.png -scale 300x100\> abc_a.png

这将缩放图像仅在

  • 任一原图宽度大于300像素,
  • 或原始图片的高度大于 100 像素。

缩放将保留原始图像的纵横比。 -- 这是您要查找的内容吗?

如果图像更小,则不会发生缩放,abc_a.png 将具有原始尺寸。

如果你想*强调将图像缩放到 300x100,无论如何,并放松纵横比,承受原始图像的一些失真,使用:

convert abc.png -scale 300x100\! abc_b.png

(但是,这也会缩放较小的图像...)

【讨论】:

    【解决方案2】:

    如果您在 Linux/OSX 上,您可以像这样获得图像尺寸:

    identify -format "%w %h" input.jpg
    

    所以,如果您想要变量w 和h 中的宽度和高度,请执行以下操作:

    read w h < <(identify -format "%w %h" input.jpg)
    

    现在您可以测试宽度和高度,并在必要时进行进一步处理:

    [ $w -gt 300 -o $h -gt 100 ] && convert input.jpg -set units ...
    

    或者,如果你想更详细:

    if [ $w -gt 300 -o $h -gt 100 ]; then
        convert ...
    fi
    

    所以,我提出的整体解决方案如下所示:

    #!/usr/bin/bash
    read w h < <(identify -format "%w %h" input.jpg)
    [ $w -gt 300 -o $h -gt 100 ] && convert input.jpg -set units ...
    

    JPEG 或 PNG 没有区别,所以如果您选择的格式,只需将我的 JPG 替换为 PNG。

    已针对 Windows 更新

    好的,没有其他人在帮忙,所以我会拿出我(非常)生疏的 Windows 技能。在 Windows 下获取图像宽度是这样的:

    identify -format "%w" input.png > w.txt
    set /p w=<w.txt
    

    现在得到高度:

    identify -format "%h" input.png > h.txt
    set /p h=<h.txt
    

    您现在应该在两个变量w 和h 中获得图像input.png 的宽度和高度,通过键入检查

    echo %w%
    echo %h%
    

    现在你需要做一些IF 语句:

    if %w% LEQ 300 GOTO SKIP
    if %h% LEQ 100 GOTO SKIP
    convert ....
    :SKIP
    

    注意::您可能需要在 Windows 中的百分号前面加上^。

    注意:您可能需要双 @ 登录脚本,因为 Windows 不合逻辑。

    【讨论】:

    • 我已经尝试过Windows版本,请看一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多