【问题标题】:imagemagick command line convert script using Linux terminal使用 Linux 终端的 imagemagick 命令行转换脚本
【发布时间】:2014-06-08 16:12:08
【问题描述】:

我用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  

【问题讨论】:

  • 那么您尝试了什么,效果如何?
  • 希望是一个好的开始。您提到的软件包有一个可以用于此目的的转换实用程序。在尝试将其转换为代码之前,您可能希望首先获得一些清晰的想法,您的命名约定应该是什么样子。不客气。
  • 请向我们展示控制流程如何工作的文本文件。另外,请告诉我们您使用的是 Windows 还是 Linux,因为答案会有所不同。
  • 我还没有创建文本文件。这是我必须使自动化顺利进行的想法。我必须制作不同大小和命名的图标:Default.png Default@2x.png, Default-568@2x.png 尺寸:320x480,640x960,640x1136

标签: linux graphics command-line resize imagemagick


【解决方案1】:

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

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

【讨论】:

  • 这看起来很接近,你介意看看我原来编辑的帖子吗?该地图用于生成的名称和大小。谢谢。
【解决方案2】:

很难猜出你的意思,但假设 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

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多