最初に、入力画像の四辺の余白幅を調査します。例えば、上の余白は、一番上のピクセルラインから操作して、1 ピクセルラインの全ての透明度が 100 % で、2 ピクセルライン目で、透明度が 100 % 未満のピクセルが見つかった場合、1 px になります。当然、2 ピクセルラインも全て透明で、3 ピクセルライン目で、透明度が 100 % 未満のピクセルがはじめて見つかった場合の余白は、2 px になります。
基本的には、調査した余白幅をカットした画像を規定サイズ※ から指定の余白幅 (ディフォルトは、10 px) の 2 倍を引いたサイズに拡縮した後、指定の余白幅を付けた画像が最終的な出力結果となります。
※ 規定サイズは、幅 370 px、高さ 320 px のことです。
ただし、拡縮時には、オリジナル画像のプロポーションを維持するため、最終的な出力画像のサイズは、幅と高さのうち、どちらかの長さが規定サイズよりも小さくなるのが普通です。このとき、拡縮後の長さは偶数になるように調整されます。
例えば、余白幅をカットした画像サイズが、400×332 ピクセルだった場合、規定サイズに合わせようとすると、350×300 ピクセルに合わせて縮小することになります※。ただし、400×332 は 350×300 よりも横長なので、幅が 350 px になるように縮小します。このときの高さは、332×350÷400 = 290.5 ですが、290.5 に最も近い偶数は、290 なので、高さは、290 px となります。最終的にはこの画像に 10 px の余白がつくので、最終的なサイズは、370×310 px になります。
※ 余白幅が、10 px の場合の例です。
ちなみに、拡縮アルゴリズムは、Windows Imaging Component の WICBitmapInterpolationModeFant なので、結構きれいだと思います。
ご意見・ご要望などは
フォームメール
から送信してください。
更新情報は、
ブログ
でも配信してます。