imageMagick変換機能を使用して、複数の画像(約100万枚)のサイズを変更したいと思います。 Ubuntu 16.04を使用しています
思ったより時間がかかりました。 (約5時間行われました。さらに5時間を与えることができましたが、停止したかったです。)
私の質問は:プログラムを停止すると画像の損傷を心配する必要がありますか?または、プログラムは安全な方法で停止しますか?
これは私のスクリプトです。
find . -name "*.JPEG" | xargs -I {} convert {} -resize "256^>" {}
(基本的にはimagetデータセットのサイズを変更しています)
Ctrl-Cを押すと一部の画像が破損しますか?
ベストアンサー1
理論的には、画像が破損してはいけません。メモリ内のimagemagick
処理が完了した後、選択したターゲットファイルに名前が変更される一時ファイルを使用できると思います。
ちなみに、1つの方法で画像を変換するのは一方向の作業です。気づいたと思うので、私の質問です。
最後に変換された画像を見つけるには、最新のファイルから時間順にファイルを一覧表示します。ファイルサイズに顕著な違いがある場合は、次に始める場所を簡単に知ることができます。それ以外の場合は、次を使用して画像サイズを取得する必要があります。イメージマジックロゴ。
さらに、100万枚の画像に対して各画像が1秒以内に処理されると、まだおおよその時間がかかります。280時間行って終了!迅速で強力な機械を持っていることを願っています...
編集:進捗状況を表示したい場合、これが私が考えることができるものです。マーティンの答え:
mkdir -p thumbs; \
COUNT=$(find -name "*.JPEG" | wc -l); \
find -name "*.JPEG" | while read IMG; do \
printf "\n$(( ++i )) / $COUNT\n" && \
[ -s "thumbs/${IMG%.JPEG}-small.jpg" ] || \
convert "$IMG" -resize "256^>" "thumbs/${IMG%.JPEG}-small.jpg"; \
done
これがすること:
- サムネイルディレクトリの作成...
- 総画像数を数える
.JPEG
... - 画像ごとに...
- 現在の画像ファイルインデックスとフルインデックスを印刷します。
- 画像がまだ変換されていない場合...
- サムネイルを作成してみてください。
サイズ変更するすべての画像が同じディレクトリにあるとし、サムネイルが原因でメインディレクトリが複雑にならないように、サムネイルを保持するサブディレクトリを使用します。それ以外の場合は、thumbs/
最初の行と5番目と6番目の行のサブディレクトリを削除できます。
イメージがサブディレクトリに分散されている場合:
COUNT=$(find -name "*.JPEG" | wc -l); \
find -name "*.JPEG" | while read IMG; do \
printf "\n$(( ++i )) / $COUNT\n" && \
[ -s "${IMG%.JPEG}-small.jpg" ] || \
convert "$IMG" -resize "256^>" "${IMG%.JPEG}-small.jpg"; \
done
読み取りは改行で停止されるため、このスクリプトはファイル名のスペースを考慮します。