人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ImageMagickによる一括処理について

特定のディレクトリ以下にある大量のjpgファイルをサムネイル化したいですが
うまくいきません。。(:o:)
画像は300ほどのサブディレクトリに別れて保存されています。

単純な縮小であれば以下のようなコマンドで変換できたのですが、
find . -name "*.jpg" -exec mogrify -quality 80 -thumbnail 100x100 {} \;

縦長、横長、サイズ等がバラバラな画像から、正方形のサムネイルを作成したいです。
短い方の辺の長さで長い方の辺を中心から正方形に切り抜きそれを縮小したいと思っています。

同じ内容の質問で
http://q.hatena.ne.jp/1232514757
こちらに回答があったのですが
getimagesize
などが、PHPでしか使えないようでうまくいきませんでした。

上記の内容を1行のコマンドもしくは以下のような形で呼び出せるシェルスクリプトにするには
find . -name "*.jpg" -exec ./resize.sh {} \;
どうすればよいでしょうか?

環境はCentOS5.6でコマンドラインでの接続は出来ますが、XWindowなどは使えません。

少し急いでおりますので1000ptを設定させて頂きました。
よろしくお願い致します。

●質問者: makkoch
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 9/9件

▽最新の回答へ

1 ● Slight_Bright
●0ポイント

mogrifyのオプションを確認してませんが、一般に同じディレクトリにあるファイルに同じ操作をスクリプト処理するのであれば、以下の通り。

for i in *.jpg;do mogrify $i -quality 80 -thumbnail 100x100 {};done

一応こちらでも試してみますが。


2 ●
●0ポイント

できるそうですが、やりかたが説明下手なんでちょっとよく分かりませんが、

YOUTUBEやYHOOOなどで調べてみてはいかがでしょうか?


3 ● Slight_Bright
●0ポイント

確認しました。

for i in *.png;do mogrify -quality 80 -thumbnail 100x100 $i;done

で、842x595を100x71に一括処理できました。

◎質問者からの返答

回答ありがとうございます。

せっかく試して頂いて申し訳ありませんが、

find . -name "*.jpg" -exec mogrify -quality 80 -thumbnail 100x100 {} \;

こちらを1行のコマンドにしたいのではなく

http://q.hatena.ne.jp/1232514757

こちらの質問の回答にある以下の部分を、getimagesizeなどのPHPの関数を使わずに

シェルスクリプトにしていただきたいと思っております。

よろしくお願い致します。

=====以下引用=======

list($w , $h) = getimagesize($tmpfile);

// 縦長か横長に応じて処理を変える

if($w >= $h){

// 横長の場合

$sq = $h; // 仮画像の正方形の辺は小さいほうになる。

$rspW = intval($w / 2) - intval($h / 2); // リサイズポイント:Width

$rspH = 0; // リサイズポイント:Height

} else {

// 縦長の場合

$sq = $w; // 仮画像の正方形の辺は小さいほうになる。

$rspH = intval($h / 2) - intval($w / 2); // リサイズポイント:Height

$rspW = 0; // リサイズポイント:Width

}

exec("convert -crop $sq"."x"."$sq+$rspW+$rspH $tmpfile $outputpath") ; // ここで正方形にトリミング

// すぐに次の作業に行くと画像ができてるかどうか不安なので時間稼ぎしてみる。

for($i = 0 ; $i < 500 ;$i++){$a = 1;}

exec("convert -quality 90 -resize 100x100\> $outputpath $outputpath2") ; // 前に作った正方形の画像を目的の100*100


4 ● mjy
●250ポイント

コマンドの例を示すと以下のようになります。

(mogrify は上書きしますから、必ずバックアップをお願いします。)

mogrify -thumbnail '100x100^' -gravity center -extent 100x100 ./file_name.jpg

find への組み込みかたは大丈夫ですよね?

(./file_name.jpg の所を '{}' にすれば良いはずです)


5 ● Slight_Bright
●0ポイント

あー、失礼しました。上記のid:mjyさんのオプションでいけるのでは無いでしょうか。

私は何段階かのスクリプト処理で、と思ったのですが、まぁ、調べればちゃんと対応するオプションありますよね。

こちらも勉強になりました。

◎質問者からの返答

こちらこそ、質問の仕方がややこしくて申し訳ありませんでした。


1-5件表示/9件
4.前の5件|次5件6.
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ