質問: imagemagickトリミングで余白無しにしたい サーバーの仕様でconvertコマンドにてimagemagickを使用しています サムネイルの作成でどんな写真がきても指定サイズにフィットしてトリミングするにはどの様にするのでしょうか? 現在は下記の様にリサイズ後に中央からトリミングしておりますが、横長写真は上下サイズが指定サイズに足らなくなってしまいます。 -resize 150x -gravity center -crop 150x100+0+0 別途 cropthumbnailimage というものを見つけたのですが、convertコマンドでする方法がわかりませんでした。 よろしくお願いします。
回答: 横長の場合は 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('保存ファイル名'); こっちが簡単かも知れませんね。