2

これはビットマップのピクセル形式を変換する標準的な方法のようですが、白黒形式に変換すると非常に悪い結果が得られます:

    // convert to black & white bitmap
    FormatConvertedBitmap monoBitmap = new FormatConvertedBitmap(bitmap, PixelFormats.BlackWhite, null, 0);

    // save black & white bitmap to file
    fileName = string.Format("{0}.bmp", data.SelectedProduct.Code);
    bitmapEncoder = new BmpBitmapEncoder();
    bitmapEncoder.Frames.Add(BitmapFrame.Create(monoBitmap));
    using (Stream stream = File.Create(fileName))
    {
        bitmapEncoder.Save(stream);
    }

結果の画像ファイルは非常に粗く、ピクセル化されています。ラインプリンターに送る必要があるので、シャープなエッジが必要です。

変換前のオリジナルは見栄えがよく (32BPP 色)、IrfanView などを使用してオリジナルを手動で白黒に変換すると、.NET よりもはるかに優れた結果が得られます。

FormatConvertedBitmap の代わりに .NET でこれを行う別の方法はありますか?

4

1 に答える 1

2

を使用してPixelFormats.BlackWhiteいます。これは、結果の画像で白黒の色のみを使用します。これにより、暗いピクセルで囲まれた明るいピクセルがある場合、粒子が粗く見える可能性があります。グレーの色合いを使用するように画像を変換すると、効果が向上する可能性があると思います。これを行うには、投稿したコードの行ではなく、次のコード行を使用します。

FormatConvertedBitmap monoBitmap = new FormatConvertedBitmap(bitmap, PixelFormats.Gray32Float, null, 0);

これにより、画像がグレーの色合いのみを使用するように変換されるため、印刷に色は必要ありません。

それがあなたが達成したい効果であるかどうか私に知らせてください。

PixelFormatsクラスの詳細については、 http: //msdn.microsoft.com/en-us/library/system.windows.media.pixelformats.aspxを参照してください。

于 2012-05-02T07:00:02.447 に答える