首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

通过命令行进一步处理图形--同时处理多个图像

通过命令行进一步处理图形--同时处理多个图像

在我的上一篇文章中,我已经给出了同时转换多个图像的代码。正如一些人所指出的,我给出的代码并不是最好的方法。
下面是我以前给出的代码:
清单 1. 生成当前目录下所有 JPEG 图片的缩略图
1
2
3
4
for img in `ls *.jpg`
do
  convert -sample 25%x25% $img thumb-$img
done




现在已经证明这是不好的 bash 风格,因为它没有很好地处理文件名中的空格(每个词将被认为是一个单独的文件名)。取而代之,一个更好的方法是:
清单 2. 生成当前目录下所有 JPEG 图片的缩略图,具有更好的 bash 风格
1
2
3
4
for img in *.jpg
do
  convert -sample 25%x25% $img thumb-$img
done




这将更好地处理文件名中的空格。
不过,结果证明这两个方案 ImageMagick 都不需要 —— 我们可以只使用         mogrify 命令。         mogrify 命令用于转换一系列文件(虽然它同样可以处理单一的图像)。      
前面的代码片断将变成:
mogrify -sample 25%x25% *.jpg
注意,这将会导致原始图像被新图像所覆盖。很难指定输出文件名,这是           mogrify 的局限性之一。        指定输出文件名的惟一的方法是,改变输出文件相对于输入文件的格式。这样的结果是新的图像具有了不同的扩展名。例如:      
mogrify -format png -sample 25%x25% *.jpg
这将创建一系列输出文件,这些文件的末尾的 jpg 将由 png 所取代,同时伴随着文件格式的改变。
前面定义的所有转换也都可以用         mogrify 命令来完成,所以,如果您不在意原始文件被覆盖的话,这是一个很好的选择。如果您不希望原始文件被覆盖,那么您可以将它们拷贝到一个临时目录来对它们进行转换(mogrify),并改变它们的名字—— 或者您继续使用 convert 和 bash。
返回列表