- ベストアンサー
imagemagickトリミングで余白無しにしたい
サーバーの仕様でconvertコマンドにてimagemagickを使用しています サムネイルの作成でどんな写真がきても指定サイズにフィットしてトリミングするにはどの様にするのでしょうか? 現在は下記の様にリサイズ後に中央からトリミングしておりますが、横長写真は上下サイズが指定サイズに足らなくなってしまいます。 -resize 150x -gravity center -crop 150x100+0+0 別途 cropThumbnailImage というものを見つけたのですが、convertコマンドでする方法がわかりませんでした。 よろしくお願いします。
- みんなの回答 (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('保存ファイル名'); こっちが簡単かも知れませんね。
お礼
有難うございます list($width, $height) = getimagesize(元画像);//横縦サイズ取得 $resize = ($width > $height) ? "x100":"150x";//横長なら x100 他は 150x にてうまくできました、PHPで画像サイズ取得、応じて縦長か横長に振り分け 勉強になりました cropThumbnailImageは自身のサーバ(convertコマンドでのみimagemagickが使える?)での使用方法が分かららず、PHP内にnew Imagickなどを使うとエラーになってしまいましたが 上記の振り分けの方が色々理解ができ、使用してこうと思います。 合わせてサイズ指定で早くなる方法も有難うございます。