フォルダー(サブフォルダーを含む)内のすべての画像のサイズを一括変更するにはどうすればよいですか?


11

サーバーには12GBの巨大なギャラリーがあり、さまざまなサブフォルダーの画像がいっぱいです。これらのファイルは大きすぎて、フル解像度で使用されていません。すべての画像のサイズを820px幅(縦横比を維持)に変更する必要があります。だから私の質問は-すべての画像のサイズを820pxより大きくし、元のファイルを上書きして保存するようなクロールスクリプトを作成するにはどうすればよいですか?

:-)よろしくお願いします。


3
find . -name "*.jpg" -exec mogrify -resize 820x {} +それらすべてを行います。「820px未満」のものを処理したくない場合は、ここにいくつかのオプションがあります
don_crissti

回答:


13

ImageMagickツールで変換またはmogrifyを実行します。

パッケージマネージャーまたはsource / rpmsから入手できます:http : //www.imagemagick.org/script/binary-releases.php#unix

基本的な使い方:

$ mogrify -resize 820x *.jpg

再帰が必要な場合:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

「820px幅(比率を保つ)」が「820x820にサイズ変更」を意味するとは思わない。それはむしろ "820px幅で何でも比率が高い"に似ています;)さらに、これは再帰性を処理しません。
エラシエル

1
いい視点ね。編集しました!

:あなたは、彼らがセット寸法よりも大きくなっていると、まだ比率を維持した場合、それが唯一のサイズが変更されるようにそれを作りたい場合は、これにそれを変更することができます find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex

2
注意:これにより、既存のイメージが上書きされます。
sudo


5

convert仕事をするために使用します。

convert -resize "1024x768>" origIMG destIMGorigIMGを1024x768にサイズ変更して、アスペクト比を維持し、画像が1024より大きい場合にのみサイズ変更して、新しい画像をdestIMGに保存します。その後、destIMGをオリジナルに移動できます。

ループを使用してすべてのディレクトリを移動するか、を使用しますfind


で再帰しながら、このコマンドをどのように変更して、元の画像を縮小した画像で上書きしfindますか?
Simon East
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.