7

個々のピクセルがよく見えるように拡大したいグレースケール画像があります。スムージングモードをなしといくつかの異なる補間モードに設定しようとしましたが(ここの他の質問で提案されているように)、画像は画面に表示される前に何らかのブレンドを行っているように見えます。

基本的に私が

(White, White,
 White, Black)

6x6と拡大すると、次のようになります。

 (White, White, White, White, White, White
  White, White, White, White, White, White
  White, White, White, White, White, White
  White, White, White, Black, Black, Black
  White, White, White, Black, Black, Black
  White, White, White, Black, Black, Black)

黒と白の領域の間に色あせがなく、正方形のように見えるはずです。画像は「ぼやけた」ではなく「ピクセル化された」ように見えるはずです

4

3 に答える 3

10

補間モードを設定してみてください:

g.InterpolationMode = InterpolationMode.NearestNeighbor;
于 2012-07-12T16:41:47.693 に答える
8

私も似たようなことをしたいと思っていました。私がこの質問を見つけたとき、どちらの答えも私が探していたものではありませんでしたが、それらを組み合わせたものでした。これが私がなりたい場所に私を導いたものであり、あなたの質問からあなたが何を望んでいるのかを私が知ることができるものです。

private Bitmap ResizeBitmap(Bitmap sourceBMP, int width, int height)
{
    Bitmap result = new Bitmap(width, height);
    using (Graphics g = Graphics.FromImage(result))
    {
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
        g.DrawImage(sourceBMP, 0, 0, width, height);
    }
    return result;
}
于 2012-09-21T00:27:59.180 に答える
1

これが役立つかもしれません!

http://www.codeproject.com/Articles/191424/Resizing-an-Image-On-The-Fly-using-NET

それ以外の場合は、このメソッドを実装して、それが機能するかどうかを確認してください。

private static Bitmap ResizeBitmap(Bitmap sourceBMP, int width, int height )
{
            Bitmap result = new Bitmap(width, height);
            using (Graphics g = Graphics.FromImage(result))
                g.DrawImage(sourceBMP, 0, 0, width, height);
            return result;
 }
于 2012-07-12T16:38:58.280 に答える