我有存储在一组有组织的文件夹的多个图像。 我需要将这些图片来自其父目录递归重新大小的特定百分比 。 我运行Ubuntu 11.10和我喜欢学习如何直接从终端做到这一点。
Answer 1:
你可以使用ImageMagick的 。 例如,对于调整当前目录到其原始大小的50%下的所有JPG图像,你可以这样做:
for f in `find . -name "*.jpg"`
do
convert $f -resize 50% $f.resized.jpg
done
生成的文件将在他们的名字“.JPG”两次。 如果这是一个问题,您可以检查以下的替代品。
遍历/查找文件来调整,你可以使用xargs的了。 例:
find . -name "*.jpg" | xargs convert -resize 50%
这将创建影像的副本。 如果你只是想将它们转换到位 ,你可以使用:
find . -name "*.jpg" | xargs mogrify -resize 50%
Answer 2:
扩展从@betabandido答案
柜面有在文件名或文件夹名称空间中的图像,那么应该使用-print0使用find和-0与xargs的,以避免任何解析错误。
find . -name "*.jpg" -print0 | xargs -0 convert -resize 50%
find . -name "*.jpg" -print0 | xargs -0 mogrify -resize 50%
Answer 3:
这也是如果你给新调整大小解析工作:
convert $f.jpg -size 1024x768 $f.resized.png
Answer 4:
您还可以使用
sudo apt-get install nautilus-image-converter
但是,这只是在当前文件夹适用于图像。 您只需安装,然后右键单击图片或多个的,并选择你想要的大小,就是这样。
我相信这也使用ImageMagick的。
Answer 5:
您可以使用批量调整大小ImageMagick的工具。
它将保持纵横比
$ convert dragon.gif -resize 64x64 resize_dragon.gif
它不会保持纵横比
$ convert dragon.gif -resize 64x64\! exact_dragon.gif
$ cat resize.sh
#!/bin/bash
for f in `find . -name "*.jpg"`
do
convert $f -resize 45x60\! $f.resize.jpg
done
将图像尺寸调整到45x60而不保持在当前目录中的纵横比。
Answer 6:
有几个答案,如:
find . -name "*.jpg" | xargs convert -resize 50%
这是行不通的,因为它会展开列表如下: convert -resize 50% a.jpg b.jpg c.jpg
将调整a.jpg
在c-0.jpg
, b.jpg
在c-1.jpg
让c.jpg
不变。
所以,你必须为每个匹配执行resize命令,给两个输入文件名和输出文件名,喜欢的东西:
find . -name "*.jpg" | xargs -n 1 sh -c 'convert -resize 50% $0 $(echo $0 | sed 's/\.jpg/-th\.jpg/')'
的每场比赛find
分别由通过xargs -n 1
调整大小脚本: sh -c 'convert -resize 50% $0 $(echo $0 | sed 's/\.jpg/-th\.jpg/')'
。 这个脚本接收参数的文件名$0
,使用sed
使由原始的替代输出文件名.jpg
的后缀-th.jpg
之一。 它运行的convert
与这两个文件的名称命令。
这里是没有版本xargs
,但find -exec
:
find -name '*.jpg' -exec sh -c 'convert -resize 50% $0 $(echo $0 | sed 's/\.jpg/-th\.jpg/')' {} \;
Answer 7:
您可以复制/粘贴在Ubuntu这个代码,并将其保存为“resize.sh”
#!/斌/庆典-e
CUR_DIR =`pwd`
CD $ 1
#resize
在* .jpg文件;
做
转换$文件调整大小50%$文件;
DONE
CD $ CUR_DIR