Graphicsクラスを使用してビットマップのサイズを変更すると、元の画像のいくつかの右および下のピクセルが省略されています。ここでダウンスケーリング後の画像の境界がなくなった
は(オリジナル、60x60、30×30)の例である:
私のコード:
foreach(int x in new[]{60, 30})
{
var result = new Bitmap(x, x);
var g = Graphics.FromImage(result);
g.DrawImage(new Bitmap(MediaDir + "original.png"), 0, 0, x, x);
result.Save(MediaDir + "result" + x + ".png", ImageFormat.Png);
}
私は何かが足りないのですか?
私は同意しますが、バグのような縫い目があります。あなたは思いませんか? –
それは依存します - アルゴリズムの仕様が "ピクセルのために最も重要な色だけを使用する"と言うならば、それはバグではありません。平均的な色濃度を出力して出力しなければならないとすれば、私は同意します。 – ZombieSheep
これはバグではありません。あなたがそれについて考えるなら、あなたがイメージを縮小するとき、あなたはデータを失うでしょう。 HighQualityBicubicなどのよりスマートな補間モードでは、データの損失は少なくなりますが、データは失われます。 3ピクセルごとに1つにマージされるようにイメージのサイズを変更すると、3つのうち2つが破棄されます。あなたの薄い赤い線が捨てられるようになる。それがより厚い(1ピクセル幅より大きい)場合、それはおそらく現れるでしょう。 –