簡體   English   中英

如何將Ushort 16位數組轉換為圖像C#

[英]How can I convert an ushort 16 bit array to an image C#

我有一個16位的ushort數組,其值范圍從0到65535,我想將其轉換為要保存的灰度圖像。 我嘗試做的是將值寫入圖像數據類型,然后將圖像轉換為位圖,但是一旦將其放入位圖數據類型,它便立即轉換為8位數據。

using (Image<Gray, ushort> DisplayImage2 = new Image<Gray, ushort>(Width, Height))
{
    int Counter = 0;
    for (int i = 0; i < Height; i++)
    {
        for (int j = 0; j < Width; j++)
        {
            DisplayImage.Data[i, j, 0] = ushortArray[Counter];
            Counter++;
        }
    }
    Bitmap bitt = new Bitmap(Width, Height, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);
    bitt = DisplayImage2.ToBitmap();
    bitt.Save(SaveDirectory, System.Drawing.Imaging.ImageFormat.Tiff);)
}

一旦將圖像放入位圖bitt中,就將其更改為8位,有沒有辦法做到這一點? 謝謝

根據鏈接的答案改編如何將Format16bppGrayScale位圖存儲為TIFF,但無需先創建實際位圖。 這需要一些您通常不會添加為引用的.NET dll,即PresentationCore和WindowsBase。

可以直接從數組創建構造TIFF編碼器可以編碼的BitmapFrame所需的BitmapSource ,因此:

var bitmapSrc = BitmapSource.Create(Width, Height, 96, 96,
                                    PixelFormats.Gray16, null, rawData, Width * 2);
TiffBitmapEncoder encoder = new TiffBitmapEncoder();
encoder.Compression = TiffCompressOption.Zip;
encoder.Frames.Add(BitmapFrame.Create(bitmapSrc));
encoder.Save(outputStream);

當我嘗試此操作時,該文件似乎是真實的16位圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM