画像の拡大縮小では、補間関数として任意の式を指定して再サンプリングを行うことができます。
式はテキスト書式で指定します。
テキスト書式の中では、以下の変数が利用できます。
| 識別子 | 内容 |
|---|---|
| x | 距離を表し、その距離にある画素の重み付けの係数として、式が返した値が使用されます。 |
| N | 設定の [範囲] で指定された値で、-N ≤ x ≤ N となります。 |
| xscale | 拡大縮小後の画像の幅と、元の画像の幅の比率を表します。2倍に拡大される場合は 2.0 に、半分に縮小される場合は 0.5 になります。 |
| yscale | 拡大縮小後の画像の高さと、元の画像の高さの比率を表します。2倍に拡大される場合は 2.0 に、半分に縮小される場合は 0.5 になります。 |
| is_xsampling | 水平方向のサンプリングであることを表します。 |
| is_ysampling | 垂直方向のサンプリングであることを表します。 |
| resize_width | 拡大縮小後の画像の幅をピクセル単位で表します。 |
| resize_height | 拡大縮小後の画像の高さをピクセル単位で表します。 |
これ以外にも、画像に対する一般的な変数が利用できます。
例えば、元の画像の幅は width、元の画像の高さは height です。
以下に式の例をいくつか示します。
| 補間法 | 補間式の例 | 参照範囲(N) |
|---|---|---|
| Bilinear (線形補間) | $(1.0-abs(x)) | 1.0 |
| Sinc | $(if(abs(x)<epsilon,1.0,~(#a=x*pi;sin(#a)/#a))) | 5.0 (一例) |
| Lanczos | $(#a=abs(x);if(#a<epsilon,1.0,~(#a=#a*pi;sin(#a)*sin(#a/N)*N/(#a*#a)))) | 3.0 (一例) |
| Bicubic (双三次補間) | $(#a=abs(x);if(#a<1.0,~(1.0-2.0*#a*#a+#a*#a*#a),~(4.0-8.0*#a+5.0*#a*#a-#a*#a*#a))) | 2.0 |