Search
Categories
Articles
Rainmeter関連
ファイル置き場
お知り合いなど

スポンサーサイト

--.--.-- | スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[GDI+] InterpolationModeをいじる

2009.09.04 | Rainmeter-dev // その他

0 Comments

Rainmeter1.0では、全MeterでAntiAliasの設定ができるようになったので、画像系のMeterでもAntiAliasが反映されるようになりました。
AntiAliasの設定は、主に図形のエッジのエイリアスを改善する使い方が多く、たぶんこれはRotatorで画像を傾けたときにも反映されるんだと思いますが(試してない)、それだけでなく、画像を拡大/縮小したときに使われる補間方法も変わっています。この補間方法をいろいろ変えて遊んでみました。

補間方法の設定には、SetInterpolationMode()を使います。引数には、InterpolationMode列挙体のどれかを指定します。

InterpolationModeDefault
Specifies the default interpolation mode.

InterpolationModeLowQuality
Specifies a low-quality mode.

InterpolationModeHighQuality
Specifies a high-quality mode.

InterpolationModeBilinear
Specifies bilinear interpolation. No prefiltering is done. This mode is not suitable for shrinking an image below 50 percent of its original size.

InterpolationModeBicubic
Specifies bicubic interpolation. No prefiltering is done. This mode is not suitable for shrinking an image below 25 percent of its original size.

InterpolationModeNearestNeighbor
Specifies nearest-neighbor interpolation.

InterpolationModeHighQualityBilinear
Specifies high-quality, bilinear interpolation. Prefiltering is performed to ensure high-quality shrinking.

InterpolationModeHighQualityBicubic
Specifies high-quality, bicubic interpolation. Prefiltering is performed to ensure high-quality shrinking. This mode produces the highest quality transformed images.

AntiAlias=0(Rainmeter1.0以前も含む)のときに使われる補間方法としては、InterpolationModeDefaultという規定値が使われています。実際にどんな補間方法が使われているのかというと……デフォルトの補間モードと書かれてあるだけで、中身は不明です。AntiAlias=1では、InterpolationModeBicubicが指定されています。

Bicubicでは、画像を縮小する用途に使うと汚くなることがあるので、デフォルトとするにはあまり好きにはなれないんですが、じゃあほかのモードだとどんな感じになるのかなと、MeterImageで補間方法を指定できるようにして比べてみました。LowQualityとHighQualityはよくわからないので除外。

写真よりは細めの文字のほうがわかりやすいと思うので、適当な文章で画像(240x80)を作ってテスト。

元画像×0.55

まずは縮小。
Disabled(AntiAlias=0)でいいんじゃないかという……。AntiAlias=1のデフォルトBicubicはシャープがかかりすぎていて、少しガタガタして見えます。
一番汚いのはやっぱりNearest Neighborで、Bilinearも思っていたよりはボケ具合が大きい。HighQualityBicubicは一番はっきりしていて綺麗だけれど、Disabledよりは負荷は増えるのかなぁと。

元画像×1.3

次に拡大。
拡大率があまり高くないので、Nearest Neighbor以外はあまり変わらない感じ。率が大きくなるほど、Bicubicの2つは他より綺麗に表示してくれます。Bilinearは縮小のときと同じく、率が大きくなるとボケてきます。
これでもDisabledなもので十分綺麗。AntiAlias=0を=1にすると、画像の大きさと拡大率につれて負荷も大きくなっていくので、=0で使ってもいいのかなぁと思ったり。
(ただ、AntiAliasは冒頭にも書いたように変形時のアンチエイリアスも兼ねているかもしれないので、それが必要ならオフにできないかも?)

個人的な結論としては、縮小するときにはAntiAlias=0を使って、拡大するときにも基本は=0で、綺麗に補間したいときだけ=1で使えばいいかなぁと。
それにしても、中身が謎なInterpolationModeDefaultが一番使い勝手がいいっていうのも……デフォルトだからか。

<追記>
もっと小さいの(x0.3)と、もっと大きいの(x2.35)も撮ってみた。

元画像×0.3 元画像×2.35

« Vistaとか7とか [Rainmeter-dev] Imageに透明度指定を入れてみる »

- Comments
0 Comments

管理者にだけ表示を許可する
- Trackbacks
0 Trackbacks


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。