Hello Mat

 找回密码
 立即注册
查看: 1860|回复: 0

RGb 转 BMP

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2022-6-29 17:08:40 | 显示全部楼层 |阅读模式

  1.         private void RgbToBMP(byte[] buffer, int width, int height)
  2.         {
  3.             int yu = width * 3 % 4;
  4.             int bytePerLine = 0;
  5.             yu = yu != 0 ? 4 - yu : yu;
  6.             bytePerLine = width * 3 + yu; //1920

  7.             using (var stream = new MemoryStream())
  8.             {
  9.                 using (var bw = new BinaryWriter(stream))
  10.                 {
  11.                     bw.Write('B');
  12.                     bw.Write('M');
  13.                     bw.Write(bytePerLine * height + 54);
  14.                     bw.Write(0);
  15.                     bw.Write(54);
  16.                     bw.Write(40);
  17.                     bw.Write(width);
  18.                     bw.Write(height);
  19.                     bw.Write((ushort)1);
  20.                     bw.Write((ushort)24);
  21.                     bw.Write(0);
  22.                     bw.Write(bytePerLine * height);
  23.                     bw.Write(0);
  24.                     bw.Write(0);
  25.                     bw.Write(0);
  26.                     bw.Write(0);

  27.                     byte[] data = new byte[bytePerLine * height]; //921600

  28.                     var pos = 0;
  29.                     for (int y = height - 1; y >= 0; y--)
  30.                     {
  31.                         for (int x = 0, i = 0; x < width; x++, i += 3)
  32.                         {
  33.                             data[y * bytePerLine + i] = buffer[pos];  // R
  34.                             data[y * bytePerLine + i + 1] = buffer[pos + 1]; // G
  35.                             data[y * bytePerLine + i + 2] = buffer[pos + 2]; //B
  36.                             pos += 3;
  37.                         }
  38.                     }

  39.                     bw.Write(data, 0, data.Length);
  40.                     bw.Flush();

  41.                     stream.Seek(0, SeekOrigin.Begin);

  42.                       // other code
  43.                 }
  44.             }
  45.         }
复制代码


算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-11-22 23:47 , Processed in 0.188393 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表