アプリ版:「スタンプのみでお礼する」機能のリリースについて

サーバーの仕様でconvertコマンドにてimagemagickを使用しています
サムネイルの作成でどんな写真がきても指定サイズにフィットしてトリミングするにはどの様にするのでしょうか?

現在は下記の様にリサイズ後に中央からトリミングしておりますが、横長写真は上下サイズが指定サイズに足らなくなってしまいます。

-resize 150x -gravity center -crop 150x100+0+0

別途 cropThumbnailImage というものを見つけたのですが、convertコマンドでする方法がわかりませんでした。

よろしくお願いします。

A 回答 (1件)

横長の場合は x150 ではなく x100 と縦の方を基準にしてやればよいので、画像の縦横を比較して値を変更すればよいかと。



list($width, $height) = getimagesize(元画像);//横縦サイズ取得
$resize = ($width > $height) ? "x100":"150x";//横長なら x100 他は 150x
exec("convert -resize $resize ~");


ちなみに "convert -define jpeg:size=150x100 -resize $resize ~"
とサイズ指定すると早くなります。またcropThumbnailImageを使用したいなら
$image = new Imagick("元画像");
$image->cropThumbnailImage(150, 100);
$image->writeImage('保存ファイル名');
こっちが簡単かも知れませんね。
    • good
    • 0
この回答へのお礼

有難うございます

list($width, $height) = getimagesize(元画像);//横縦サイズ取得
$resize = ($width > $height) ? "x100":"150x";//横長なら x100 他は 150x

にてうまくできました、PHPで画像サイズ取得、応じて縦長か横長に振り分け
勉強になりました

cropThumbnailImageは自身のサーバ(convertコマンドでのみimagemagickが使える?)での使用方法が分かららず、PHP内にnew Imagickなどを使うとエラーになってしまいましたが
上記の振り分けの方が色々理解ができ、使用してこうと思います。

合わせてサイズ指定で早くなる方法も有難うございます。

お礼日時:2013/03/16 14:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!