怎么在C#中创建BMP文件(没有文件头,有数据部分)

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Drawing;
usingSystem.IO;

public  BitmapAddHeader(byte[]imageDataDetails)
    {
       Bitmapbitmap=null;
      intlength=imageDataDetails.GetLength(0);
       using(MemoryStreamstream=newMemoryStream(length+14))//为头腾出14个长度的空间
       {
        byte[]buffer=newbyte[13];
         buffer[0]=0x42;//Bitmap固定常数
        buffer[1]=0x4d;//Bitmap固定常数
         stream.Write(buffer,0,2);//先写入头的前两个字节

        //把我们之前获得的数据流的长度转换成字节,
        //这个是用来告诉“头”我们的实际图像数据有多大
         byte[]bytes=BitConverter.GetBytes(length);
         stream.Write(bytes,0,4);//把这个长度写入头中去
        buffer[0]=0;
        buffer[1]=0;
        buffer[2]=0;
        buffer[3]=0;
         stream.Write(buffer,0,4);//在写入4个字节长度的数据到头中去
         intnum2=0x36;//Bitmap固定常数
         bytes=BitConverter.GetBytes(num2);
         stream.Write(bytes,0,4);//在写入最后4个字节的长度
        stream.GetBuffer();
         stream.Write(imageDataDetails,0,length);//把实际的图像数据全部追加到头的后面
         bitmap=newBitmap(stream);//用内存流构造出一幅bitmap的图片
         bitmap.RotateFlip(RotateFlipType.Rotate180FlipX);
         stream.Close();
        returnbitmap;//最后就得到了我们想要的图片了
      }
     }

 

转载于:https://www.cnblogs.com/yuanyuan/articles/3520707.html

C#,获取图(BMP文件深度(或称为颜色深度)通常涉及到分析文件的信息。BMP格式的文件包含了图像的宽度、高度、颜色格式等信息。深度是指每个像素点所用的数来表示颜色信息,常见的深度有1(黑白),4(16色),8(256色),16(高彩色),24(真彩色),32(真彩色加Alpha通道)等。 下面是一个简单的C#代码示例,说明如何从BMP文件读取深度信息: ```csharp using System; using System.IO; public class BmpImageInfo { public static int GetBmpBitDepth(string filePath) { // BMP文件信息的长度为14字节,其第29个字节表示颜色数 const int BITMAPINFOHEADER_SIZE = 40; byte[] bytes = File.ReadAllBytes(filePath); if (bytes.Length < BITMAPINFOHEADER_SIZE + 14) { throw new InvalidOperationException("文件不是有效的BMP格式。"); } // 读取文件颜色数的偏移量(第29个字节,索引为28) int bitCountOffset = 28; // 读取深度值 int bitDepth = BitConverter.ToInt32(bytes, bitCountOffset); // 由于深度值是从文件直接读取的,因此需要检查是否有颜色平面 if (bitDepth == 0) { // 如果读取到0,表示颜色数在文件的BITMAPINFOHEADER // BITMAPINFOHEADER是紧接着BMP文件开始的,偏移量为14字节 bitCountOffset += 14; // 读取BITMAPINFOHEADER深度值 bitDepth = BitConverter.ToInt32(bytes, bitCountOffset); } return bitDepth; } } class Program { static void Main() { string filePath = "path_to_your_bmp_file.bmp"; try { int bitDepth = BmpImageInfo.GetBmpBitDepth(filePath); Console.WriteLine($"该BMP图像的深度为: {bitDepth}"); } catch (Exception ex) { Console.WriteLine($"读取深度时发生错误: {ex.Message}"); } } } ``` 这段代码首先定义了一个`BmpImageInfo`类,其包含一个`GetBmpBitDepth`方法用于从BMP文件获取深度。需要注意的是,深度信息在标准BMP文件格式的存储置可能会根据图像是否包含调色板等信息而有所不同。因此,代码考虑了这两种情况。 在实际使用,你需要将`filePath`变量替换为你要分析的BMP文件的实际路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值