代码改变世界

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

2014-01-15 14:16  于为源  阅读(1536)  评论(0编辑  收藏  举报
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;//最后就得到了我们想要的图片了
      }
     }