繁体   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