簡體   English   中英

如何將 2-2-2-2 格式的原始二進制圖像轉換為 C# 中的 bitmap?

[英]How to convert a raw binary image in 2-2-2-2 format into a bitmap in C#?

我是 C# 的新手,我正在嘗試從原始二進制 stream 生成圖像。 該文件為純二進制文件,擴展名為.bin,編碼為8 bpp 2-2-2-2格式; 它包含 2 位用於每種 RGB 顏色和 2 位用於不透明度。 我還沒有嘗試過任何東西,因為我真的不知道從哪里開始; 我搜索了以前發布的問題,但沒有找到任何有用的東西。 我的應用程序將接收串行 stream 並且我必須從文件中生成一個 800 x 600 的圖像,每個像素使用一個字節。 有什么想法至少可以讓我開始嗎?

我會從這樣的事情開始。

public void ImageTest()
{
    var bitmap = new Bitmap(800,600);
    var stream = new BinaryReader(new FileStream("pathtofile",FileMode.Open));
    byte currentbyte;
    int x = 0;
    int y = 0;
    while((currentbyte = stream.ReadByte()) != EndOfImageMarker)
    {
        bitmap.SetPixel(x,y,DecodeByteToColor(currentbyte));
        x++;
        y++;
        if (x == 799)//next line
        {
            x = 0;
        }
        if (y == 599)
        {
            break;
        }
    }
    bitmap.Save("Path to new file...");
}

private Color DecodeByteToColor(byte currentbyte)
{
    const int adjustment = 10;
    var red =  (currentbyte & 0x3) * adjustment;
    var green = (currentbyte << 2 & 0x3) * adjustment;
    var blue = (currentbyte << 4 & 0x3) * adjustment;
    var alpha = (currentbyte << 6 & 0x3) * adjustment;
    return Color.FromArgb(red, green, blue, alpha);
}

自從做位移的東西以來已經有一段時間了,我可能會讓操作員從你需要的東西倒退。 目的是獲取前兩位,並將其轉移到接下來的兩位。 調整將確定每個位在轉換為全范圍值后獲得多少顏色。

暫無
暫無

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

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