【问题标题】:Imagemagick convert resize then cropImagemagick 转换调整大小然后裁剪
【发布时间】:2015-12-04 15:00:53
【问题描述】:


我有超过 1000 张不同分辨率的图像(例如 1234x2122、4400x5212 等),我想将它们全部转换为固定的 100x100 尺寸,所以。

  1. 首先我需要调整图像的大小保持比例,并获得 100xA 或 Ax100,其中 A > 100(它取决于图像的宽度和高度,对于某些图像宽度 > 高度,对于某些图像高度 > 宽度)。

  2. 将此图像从中心裁剪为 100x100

是否有一个简单的convert 命令可以用于我的所有图像?

【问题讨论】:

标签: resize imagemagick crop


【解决方案1】:

您将在-resize 操作上使用area-fill (^) geometry modifier 来统一缩小比例。对于裁剪中心,-extent-gravity Center 将起作用。

convert input.jpg -resize 100x100^ \
                  -gravity Center  \
                  -extent 100x100  \
        output.jpg

更新

正如 Mark Setchell 在 cmets 中指出的,mogrify 实用程序可用于批量转换项目。

mogrify -path ./path/to/write/results/ \
        -resize 100x100^ \
        -gravity Center  \
        -extent 100x100  \
        ./path/to/source/files/*

提醒: Mogrify 将用生成的图像覆盖原始文件,除非您设置了-path 参数。

【讨论】:

  • 投我一票:-) 如果 OP 有 1000 多张图片,也许会提到 mogrify
  • @emcconville,有没有办法在不丢失 png 的透明背景的情况下做到这一点?
  • 我找到了解决方案 (src):convert input.png -resize 100x100^ -gravity Center -background transparent -extent 100x100 output.png
  • 答案是否完全符合 Gor 的要求?即,Gor 要求在任何一个维度上都没有空白的中心部分,但是一遍又一遍地阅读答案,我觉得截至 2015 年 9 月 8 日给出的答案可能在任一维度上都有空白。我说得对吗,有人吗?
【解决方案2】:

为了保持纵横比并且不填充任何东西(范围),而是从你可以做的超出纵横比的较长边缘进行裁剪

convert input.jpg -resize 100x100^ \
                  -gravity Center  \
                  -crop 100x100+0+0 +repage  \
        output.jpg

如果您愿意,可以选择从一侧裁剪更多

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2013-03-01
    相关资源
    最近更新 更多