gimp脚本可以对多个图像进行平方,保持纵横比和最小尺寸

时间:2015-12-11 10:42:54

标签: image automation gimp

我有数百种不同大小的jpg(例如2304px x 2323px)。

在gimp中,我可以使用批量过滤器将这些更改为相对或绝对的特定大小。但是对于某些配置,我必须手动执行以下操作,这对于所有图像都需要永远:

  1. 将最短边的大小更改为500px,保持纵横比,使长边至少为500px。因此,如果图像是1000 x 1200,现在将是500 x 600.图像有纵向和横向。
  2. 更改画布大小,使图像为500px x 500px正方形,居中。这将切断部分图像(很好,大多数图像几乎都是正方形)。
  3. 使用-s附加到文件名导出文件。
  4. 是否有可用于自动执行这些步骤的脚本?

2 个答案:

答案 0 :(得分:0)

除非您找到使用gimp的方法,否则您可能需要查看ImageMagick mogrify 工具允许修改和调整图像大小。

注意:除非您使用stdin / stdout,否则mogrify将覆盖您的文件。你可能想要一个像这样的脚本:

#!/bin/sh
for image in `ls /your/path/*jpg`; do
    mogrify -resize ... - < "$image" > "${image%%.png}-s.jpg"
done

答案 1 :(得分:0)

ImageMagick中有类似的东西。它并不像看起来那么难,因为大多数都是评论。尝试使用 COPY 文件 - 它会执行当前目录中的所有JPEG。

#!/bin/bash

shopt -s nullglob
shopt -s nocaseglob

for f in *.jpg; do
   echo Processing $f...

   # Get width and height
   read w h < <(convert "$f" -format "%w %h" info: )
   echo Width: $w, Height: $h

   # Determine new name, by stripping extension and adding "s"
   new=${f%.*}
   new="${new}-s.jpg"
   echo New name: $new

   # Determine lesser of width and height
   if [ $w -lt $h ]; then
      geom="500x"
   else
      geom="x500"
   fi
   convert "$f" -resize $geom -gravity center -crop 500x500+0+0! "$new"
done