imagemagick命令行使用Linux终端转换脚本

时间:2014-06-08 16:12:09

标签: linux graphics command-line resize imagemagick

我使用PNG创建GIMP图像文件,并希望从不同,大小和文件名的PNG图像中制作多个图标。

我希望使用ImageMagick或类似内容进行'批量'转换。并且从文本文件中读取命名约定和大小要求可能是因为我还想使用GIMP创建另一个单独的图像,并且在每个图像上重新调整大小并使用不同的文件名。

修改

需要将一个图像文件转换为THIS:

  Icon.png  
  Icon@2x.png  
  Icon-72.png  
  Icon-72@2x.png  

文件尺寸为:

  57x57  
  114x114  
  72x72  
  144x144  

$ convert image.png -resize 57x57 Icon.png  
$ convert image.png -resize 114x114 Icon@2x.png  
# ...etc  

2 个答案:

答案 0 :(得分:0)

所以如果有一个文本文件只在两列中存储地图“文件名 - >图片大小”,那么你应该能够遍历行,例如像这样:

cat map.txt | while read line; do
  file=$(echo $line | awk '{print $1}')
  size=$(echo $line | awk '{print $2}')

  newfile=${file%.png}-new.png

  convert $file -resize $size $newfile
done

答案 1 :(得分:0)

很难猜出你的意思,但假设params.txt看起来像这样:

-resize 64x64

然后你可以这样做:

#!/bin/bash
params=$(cat params.txt)
for f in *.png
do
   newname=${f%.png}_new.png
   echo convert "$f" $params "${newname}"
done