【C#】【WriteableBitmap】8位灰度图转24色位图

/// <summary>
/// ConvertBitmap8To24 process.
/// 8位灰度图转24色位图
/// </summary>
/// <param name="src">Source image.</param>
/// <returns></returns>
public static WriteableBitmap ConvertBitmap8To24(WriteableBitmap src)////
{
    if (src != null)
    {
        int w = src.PixelWidth;
        int h = src.PixelHeight;
        WriteableBitmap binaryImage = new WriteableBitmap(w, h, 96.0, 96.0, PixelFormats.Rgb24, null);
        byte[,] gray8Data = CopyGray8Pixels(src, out int stride);
        PixelColor[,] PixelData = new PixelColor[h, w];
        stride = w * 3;

        for (int i = 0; i < PixelData.GetLength(0); i++)
        {
            for (int j = 0; j < PixelData.GetLength(1); j++)
            {
                PixelData[i, j].Blue = PixelData[i, j].Red = PixelData[i, j].Green = gray8Data[i, j];
            }
        }

        binaryImage.WritePixels(new Int32Rect(0, 0, src.PixelWidth, src.PixelHeight), PixelData, stride, 0);
        return binaryImage;
    }
    else
    {
        return null;
    }
}
posted @ 2024-05-20 11:33  qiutian-hao  阅读(32)  评论(0编辑  收藏  举报