web-dev-qa-db-ja.com

ターミナル内でUbuntuの画像のサイズを再帰的にバッチ処理する方法は?

整理された一連のフォルダに複数の画像が保存されています。これらの画像のサイズを、親ディレクトリから特定の割合で再帰的にに変更する必要があります。私はUbuntu 11.10を実行していますが、ターミナルから直接それを行う方法を学ぶことを好みます。

32
CompilingCyborg

imagemagick を使用できます。たとえば、現在のディレクトリの下にあるすべてのJPG画像のサイズを元のサイズの50%に変更するには、次のようにします。

for f in `find . -name "*.jpg"`
do
    convert $f -resize 50% $f.resized.jpg
done

結果のファイルには、名前に「.jpg」が2回含まれます。それが問題である場合は、次の選択肢を確認できます。

サイズ変更するファイルの走査/検索には、 xargs も使用できます。例:

find . -name "*.jpg" | xargs convert -resize 50%

これにより、画像のコピーが作成されます。それらを単にinplaceに変換したい場合、以下を使用できます:

find . -name "*.jpg" | xargs mogrify -resize 50%
71
betabandido

@betabandidoからの回答を拡張する

画像があるファイル名またはフォルダー名にスペースがある場合、解析エラーを回避するために、findで-print0を使用し、xargsで-0を使用する必要があります。

find . -name "*.jpg" -print0 | xargs -0 convert -resize 50%
find . -name "*.jpg" -print0 | xargs -0 mogrify -resize 50%
4
Gaurav Goyal

新しいサイズ変更解像度を指定した場合にも機能します:

convert $f.jpg -size 1024x768 $f.resized.png
1
Ritter

使用することもできます

Sudo apt-get install nautilus-image-converter

ただし、これは現在のフォルダー内の画像に対してのみ機能します。インストールするだけで、1つまたは複数の画像を右クリックして、必要なサイズを選択するだけです。

これもimagemagickを使用していると思います。

0
stefanbc

バッチサイズ変更には、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に変更します。

0
Sarvsav Sharma