C# - 将任何文件类型转换为图片框中显示的位图

时间:2016-12-24 15:19:47

标签: c# bitmap converter bitstream

我希望OpenFileDialog选择任何文件类型并在位图图像中显示文件位。我的意思是所选文件包含一些0/1位,我想在黑白图像中显示它们的宽度和高度来自用户。而且我希望在所选文件的大小上没有限制。它可能和内存一样大。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果文件是有效的图像文件,您只需阅读如下图像:

Image image = Image.FromFile(pathOfImage);

...然后将其分配到图片框。

您需要引用System.Drawing.dll并在代码顶部添加using using System.Drawing;

但是,如果文件中的位代表黑白像素,则需要自己绘制图像。

首先创建一个Bitmap,然后从中创建一个图形对象。然后,您可以在其上绘制像素。

using (var image = new Bitmap(width, height))
using (var g = Graphics.FromImage(image)) {
    // TODO: Draw using the graphics object. (Insert code below)
}

您可以使用此答案中的答案来阅读位:BinaryReader - Reading a Single “ BIT ”?

在双循环中,您可以迭代这些位。假设这些位是逐行存储的:

using (var stream = new FileStream("file.dat", FileMode.Open)) {
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            bool? bit = stream.ReadBit(true);
            if (bit == null) { // No more bits
                return; 
            }
            if (bit.Value) {
                g.FillRectangle(Brushes.White, x, y, 1, 1);
            }
        }
    }
}

最后将图像分配到图片框

pictureBox1.Image = image;