縦横サイズが不特定の画像を任意のサイズ内でアスペクト比を維持しつつサムネイル化する方法

例えば縦150px横100pxのサムネイルを作成したい場合、変換元の画像サイズ縦300px横200px等であれば、縦横比が一致するため、サムネイル化がすごく楽。
けど、変換元の画像サイズが不特定、しかも横長だったり、縦長だったりする場合も、縦横比率を維持しつつ、縦150px横100pxのサムネイルに収めたいといった場合、少々面倒。
そういう場合のサムネイル生成方法。

以下の手順を踏む。
1.サムネイルサイズの画像を生成
2.変換元の画像縦横サイズを取得(それぞれ$y $xとする)
3.変換元の画像が縦長か横長かを判定
4.縦長の場合は(サムネイル縦 / $y)、横長の場合は(サムネイル横/$x)を比率とする
5.変換元画像を$xと$yに比率をかけたサイズに変換し、サムネイルサイズの画像にコピー

これでおっけー。
余白は適当に塗りつぶすなりなんなりで…。
センタリングする場合は、

コピー先y座標 =(サムネイル横-$y)/2
コピー先x座標 =(サムネイル横-$x)/2

2010年06月27日  タグ:

Leave a Reply