C#中使用byte[]数据,生成Bitmap

您所在的位置:网站首页 byte转成bitmap C#中使用byte[]数据,生成Bitmap

C#中使用byte[]数据,生成Bitmap

2024-07-12 22:13| 来源: 网络整理| 查看: 265

转自:http://www.bitscn.com/pdb/dotnet/200904/160808.html     摸索了3天,终于成功实现了使用已知byte[]数据,生成Bitmap(256色灰度 BMP位图)。     其中遇到了很多问题:     如何在C#(GDI+)中操作Bitmap,获取位图的各种数据,就像在C++|中一样     如何修改Bitmap的调色板

如何解决位图显示错位的问题,即位图的4字节对齐问题

如何用数据生成位图

总结一下,希望对需要的朋友有所帮助,少走弯路。

///            ///  使用byte[]数据,生成256色灰度 BMP 位图          ///            ///            ///            ///            ///            public   static  Bitmap CreateBitmap( byte [] originalImageData,  int  originalWidth,  int  originalHeight)          {              // 指定8位格式,即256色              Bitmap resultBitmap  =   new  Bitmap(originalWidth, originalHeight, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);              // 将该位图存入内存中              MemoryStream curImageStream  =   new  MemoryStream();              resultBitmap.Save(curImageStream, System.Drawing.Imaging.ImageFormat.Bmp);              curImageStream.Flush();              // 由于位图数据需要DWORD对齐(4byte倍数),计算需要补位的个数              int  curPadNum  =  ((originalWidth  *   8   +   31 )  /   32   *   4 )  -  originalWidth;              // 最终生成的位图数据大小              int  bitmapDataSize  =  ((originalWidth  *   8   +   31 )  /   32   *   4 )  *  originalHeight;              // 数据部分相对文件开始偏移,具体可以参考位图文件格式              int  dataOffset  =  ReadData(curImageStream,  10 ,  4 );              // 改变调色板,因为默认的调色板是32位彩色的,需要修改为256色的调色板              int  paletteStart  =   54 ;              int  paletteEnd  =  dataOffset;              int  color  =   0 ;              for  ( int  i  =  paletteStart; i  =   0 ; originalRowIndex -- )              {                  int  destRowIndex  =  originalHeight  -  originalRowIndex  -   1 ;                  for  ( int  dataIndex  =   0 ; dataIndex 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3