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

使用Linux终端的imagemagick命令行转换脚本,linux,graphics,command-line,resize,imagemagick,Linux,Graphics,Command Line,Resize,Imagemagick,我使用GIMP创建PNG图像文件,并希望从该PNG图像中创建几个不同大小和文件名的图标 我希望使用ImageMagick或类似的工具进行“批处理”转换。并从文本文件中读取命名约定和大小要求,可能是因为我还想使用GIMP创建另一个单独的图像,并在每个图像上使用不同的文件名多次重新调整大小 编辑 需要将一个图像文件转换为以下格式: Icon.png Icon@2x.png Icon-72.png Icon-72@2x.png 文件尺寸如下所示: 57x57

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

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

编辑

需要将一个图像文件转换为以下格式:

  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  

因此,如果有一个文本文件将地图文件名->图片大小存储在两列中,那么您应该能够遍历行,例如:

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
-resize 64x64

很难猜出您的意思,但假设params.txt如下所示:

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
-resize 64x64
然后你可以这样做:

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

那么你尝试了什么,它是如何工作的呢?希望是一个好的开始。您提到的包有一个convert实用程序,您可以将其用于此目的。在您尝试将命名约定转换为代码之前,您可能希望先了解一下命名约定应该是什么样子。不客气。请向我们展示控制流程工作方式的文本文件。另外,告诉我们你是在Windows还是Linux上,因为答案会有所不同。我还没有创建文本文件。这是一个想法,我必须可能使自动化顺利进行。我必须制作不同大小和命名的图标:Default.pngDefault@2x.png,默认值-568@2x.png尺寸:320x480640x960640x1136这看起来很接近,你介意看看我原来编辑的帖子吗?该映射用于生成的名称和大小。非常感谢。