System.Drawing.Graphics.DrawImage メソッドで画像の縮小を行なうと CPU により結果が異なる

現象

.NET Framework の System.Drawing.Graphics.DrawImage() メソッドを用いて描画する際に、縮小処理を行なうと、32 ビット環境で実行した場合と 64 ビット環境で実行した場合とで、結果に差異が生じることがあります。
この現象は、たとえば 10000 x 10000 ピクセルの画像を 100 x 100 ピクセルの範囲に描画するなどの大幅な縮小を行なった際に発生しやすい傾向にあります。

原因

DrawImage() の実体が含まれる Windows Imaging Component (WIC) の実装が、32 ビット用と 64 ビット用とで異なることが原因です。

解決方法

上記原因によりこの現象が発生する場合には、Graphics.InterpolationMode に NearestNeighbor や HighQualityBicubic などを指定することが有効です。
Graphics.InterpolationMode に Default, Bilinear, Low を指定した場合に、現象が発生することが確認されています。
プロパティ

文書番号:2927122 - 最終更新日: 2016/09/29 - リビジョン: 1

フィードバック