RGB565转BITMAP[C#---2]

server/2025/2/5 15:04:20/

这是楼主在开发C#上位机的时候遇到的另一个问题,怎么把RGB565转为BITMAP,在CSDN上搜索,要么是安卓平台的,要么是2011年的古早代码(还没排版),还是靠自己和DEEPSEEK的智慧解决了(●’◡’●) 当然,凭良心说话,楼主主要负责DEBUG和调试。为了让大家少走弯路,所以也就贴出啦。

上位机也在锐意开发中啊!实现的功能是ESP和PC使用WLAN图传。有这方面需求的小伙伴可以关注一下我的项目
这是GITCODE项目地址
这个项目我这个寒假会一直做下去丰富更多的功能,包括WLAN 收发什么的
GITHUB?仓库建好了,但是不知道为啥传不上去(;′⌒`)

如果这对你有帮助,还请点点STAR,点点赞,点点关注,这对我真的很重要,谢谢ヾ(•ω•`)o

        public static Bitmap ConvertRgb565ToBitmap(byte[] imageData, int width, int height){// 创建一个新的Bitmap对象Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);// 锁定Bitmap的像素数据BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);// 获取指向Bitmap像素数据的指针IntPtr ptr = bitmapData.Scan0;// 分配内存来存储转换后的像素数据int bytes = Math.Abs(bitmapData.Stride) * height;byte[] rgbValues = new byte[bytes];// 遍历每个像素并转换RGB565到RGB888for (int y = 0; y < height; y++){for (int x = 0; x < width; x++){int index = (y * width + x) * 2;ushort rgb565 = BitConverter.ToUInt16(imageData, index);// 提取RGB565的红色、绿色和蓝色分量byte red = (byte)((rgb565 >> 11) & 0x1F);byte green = (byte)((rgb565 >> 5) & 0x3F);byte blue = (byte)(rgb565 & 0x1F);// 将5位和6位分量扩展为8位red = (byte)((red * 255) / 31);green = (byte)((green * 255) / 63);blue = (byte)((blue * 255) / 31);// 计算ARGB值int argb = 255 << 24 | red << 16 | green << 8 | blue;// 计算在rgbValues中的索引int pos = (y * bitmapData.Stride) + (x * 4);rgbValues[pos] = (byte)blue;rgbValues[pos + 1] = (byte)green;rgbValues[pos + 2] = (byte)red;rgbValues[pos + 3] = 255; // Alpha通道}}// 将转换后的像素数据复制回BitmapMarshal.Copy(rgbValues, 0, ptr, bytes);// 解锁Bitmap的像素数据bitmap.UnlockBits(bitmapData);return bitmap;}

最后贴一张楼主的开发进度
在这里插入图片描述


http://www.ppmy.cn/server/165166.html

相关文章

JavaScript前后端交互-AJAX/fetch

摘自千峰教育kerwin的js教程 AJAX 1、AJAX 的优势 不需要插件的支持&#xff0c;原生 js 就可以使用用户体验好&#xff08;不需要刷新页面就可以更新数据&#xff09;减轻服务端和带宽的负担缺点&#xff1a; 搜索引擎的支持度不够&#xff0c;因为数据都不在页面上&#xf…

PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络

神经常微分方程&#xff08;Neural ODEs&#xff09;是深度学习领域的创新性模型架构&#xff0c;它将神经网络的离散变换扩展为连续时间动力系统。与传统神经网络将层表示为离散变换不同&#xff0c;Neural ODEs将变换过程视为深度&#xff08;或时间&#xff09;的连续函数。…

LabVIEW的智能电源远程监控系统开发

在工业自动化与测试领域&#xff0c;电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作&#xff0c;存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网&#xff08;IIoT&#xff09;技术&#xff0c;实现电源设备…

2 MapReduce

2 MapReduce 1. MapReduce 介绍1.1 MapReduce 设计构思 2. MapReduce 编程规范3. Mapper以及Reducer抽象类介绍1.Mapper抽象类的基本介绍2.Reducer抽象类基本介绍 4. WordCount示例编写5. MapReduce程序运行模式6. MapReduce的运行机制详解6.1 MapTask 工作机制6.2 ReduceTask …

使用真实 Elasticsearch 进行高级集成测试

作者&#xff1a;来自 Elastic Piotr Przybyl 掌握高级 Elasticsearch 集成测试&#xff1a;更快、更智能、更优化。 在上一篇关于集成测试的文章中&#xff0c;我们介绍了如何通过改变数据初始化策略来缩短依赖于真实 Elasticsearch 的集成测试的执行时间。在本期中&#xff0…

【含文档+PPT+源码】基于小程序的智能停车管理系统设计与开发

项目介绍 本课程演示的是一款基于小程序的智能停车管理系统设计与开发&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3…

SQL 总结

SQL 总结 引言 SQL(Structured Query Language)是一种用于管理关系数据库的计算机语言。自从1970年代被发明以来,SQL已经成为了数据库管理的基础。本文将对SQL的基本概念、常用命令、高级特性以及SQL在数据库管理中的应用进行总结。 SQL基本概念 数据库 数据库是存储数…

Hive on Spark优化

文章目录 第1章集群环境概述1.1 集群配置概述1.2 集群规划概述 第2章 Yarn配置2.1 Yarn配置说明2.2 Yarn配置实操 第3章 Spark配置3.1 Executor配置说明3.1.1 Executor CPU核数配置3.1.2 Executor内存配置3.1.3 Executor个数配置 3.2 Driver配置说明3.3 Spark配置实操 第4章 Hi…