如何批量递归终端内调整在Ubuntu的图片?(How to batch resize images

2019-06-24 23:03发布

我有存储在一组有组织的文件夹的多个图像。 我需要将这些图片来自其父目录递归重新大小的特定百分比 。 我运行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.jpgc-0.jpgb.jpgc-1.jpgc.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

保存此文件后,使用“./rotate.sh folder_containing_images”从终端运行

欲了解更多这样的东西,请点击这里



文章来源: How to batch resize images in Ubuntu recursively within the terminal?