社区
C#
帖子详情
已知像素数据,利用GDI+快速重建图像对象
rib06
2007-07-02 10:30:17
已经获得了一幅图像(512×512,像素格式ARGB)的像素数据数组pixels[],里面的每一个元素都是图像上对应位置的像素值,如果利用GDI+重新构造出Image对象,那么可以直接通过二重循环SetPixel实现,但这种方法实在是太慢太慢了,各位高手有没有更快的方法?请指点一二,万分感谢!
...全文
267
7
打赏
收藏
已知像素数据,利用GDI+快速重建图像对象
已经获得了一幅图像(512×512,像素格式ARGB)的像素数据数组pixels[],里面的每一个元素都是图像上对应位置的像素值,如果利用GDI+重新构造出Image对象,那么可以直接通过二重循环SetPixel实现,但这种方法实在是太慢太慢了,各位高手有没有更快的方法?请指点一二,万分感谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rib06
2007-07-06
打赏
举报
回复
已经基于内存流实现,但只用像素数据不行,需要补54字节的头,构造这个头费了不少劲,最后用很猥琐的办法凑合了,速度很快。
感谢大家!
rib06
2007-07-04
打赏
举报
回复
多谢楼上诸位
@tuyile006(小y)
用内存流构建Image的方法我也曾经试过,但总是会报运行时错误,我会再试一下,多谢多谢
@zbevimage(冰峰孤骑)
GDAL的确很牛,也可以通过SWIG在.net下面使用,多谢提醒,后面会考虑
@hazrael(没事儿偷着乐)
SetPixel的效率可以说已经低到了不可用的程度,可是我的这段肯定是要用c#编,我觉得应该有快速实现的办法
多谢大家,其实这个功能在Java下面可以借助ImageProducer实现,非常简单而且快的要命,.net下面就一直没找到对应的方法
guxingdao
2007-07-03
打赏
举报
回复
风过无痕
hazrael
2007-07-03
打赏
举报
回复
嗯,当初做过一个项目,就是对内存中的像素值进行变化。开始的时候用的就是GDI的API——GetPixel和SetPixel,结果性能差的厉害。刚开始的时候还不知道是哪里性能差,后来用工具分析,发现问题集中在这两个API上(尤其是SetPixel)。当时用的是C++开发,所以直接操作内存,修改前后的速度比较,简直可以说,从牛车直接升级到法拉利了。真不知道微软这个API里到底是怎么实现的。
zbevimage
2007-07-03
打赏
举报
回复
做图像其实可以研究一下GDAL类库。功能非常强大。只是可惜对。NET支持不是很好。
小y的CSDN博客
2007-07-03
打赏
举报
回复
System.IO.MemoryStream ms = new System.IO.MemoryStream();
ms.Write(pixels,0,pixels.Length);
Bitmap image =(Bitmap) Bitmap.FromStream(ms);
owennol
2007-07-03
打赏
举报
回复
用不安全代码,用指针附值
C++实现轻量级桌面截图工具:GDI/
GDI+
与Windows消息循环实战
屏幕截图是桌面自动化与
图像
处理中的基础功能,其核心原理在于捕获并操作屏幕
像素
数据
。在Windows平台上,这通常通过图形设备接口(GDI)及其增强版
GDI+
实现,它们提供了访问和操作图形硬件的底层API。从技术价值看,直接调用原生API能实现极致的轻量化与高性能,避免第三方库的臃肿,并深入理解Windows的消息驱动模型与设备上下文(DC)机制。在工程实践中,这涉及到创建隐藏窗口、处理鼠标消息、使用BitBlt进行
像素
块传输,以及
利用
双缓冲技术实现无闪烁的交互绘制。这些技术广泛应用于需要定制化屏幕捕获、远程
Windows屏幕
图像
差异检测:GPU加速的
像素
级变化识别方案
屏幕
图像
差异检测是一种用于识别两帧画面间视觉变化的基础计算机视觉技术,其核心原理是通过空间域或频域特征比对实现变化区域定位。相比传统CPU逐
像素
比对,现代方案依托GPU直采(如DXGI桌面复制)与块级哈希(如DCT+LoG双模指纹)提升实时性与鲁棒性,具备低延迟、抗DPI缩放、多显卡适配等工程价值。该技术广泛应用于RPA自动化、远程桌面增量更新、UI界面变更巡检及无障碍辅助交互等场景,尤其适合需在.NET环境实现纯托管、无OpenCV依赖的生产级屏幕监控系统。
C++屏幕捕获SDK实战:从GDI到DXGI的高效实现方案
屏幕捕获技术是计算机图形学和实时
数据
处理的基础能力之一,它允许程序获取并处理显示设备的
图像
输出。其核心原理是通过操作系统提供的图形接口直接访问帧缓冲区或桌面合成
数据
。在Windows平台上,主要技术路线包括传统的GDI(图形设备接口)和现代的DXGI(DirectX图形基础设施)。GDI方案兼容性广泛但性能有限,适合低频截图;而DXGI方案则通过DirectX桌面复制API直接访问GPU显存,能实现高帧率、低延迟的连续捕获,并能正确捕获硬件加速内容(如DirectX游戏和视频)。这项技术的工程价值在于为实时
MFC画图程序2009:经典GDI绘图与双缓冲技术深度解析
在Windows桌面开发领域,图形设备接口(GDI)是构建图形应用程序的基础技术,它通过设备上下文(DC)管理图形输出,实现从简单线条到复杂
图像
的绘制。其核心原理在于消息驱动架构下的图形
对象
管理与坐标变换,为桌面软件提供了稳定的图形渲染能力。这一技术的工程价值在于能够高效处理图形交互、实现无闪烁绘图,广泛应用于工业控制、
数据
可视化和专业工具软件开发。通过双缓冲技术,开发者可以解决绘图过程中的闪烁问题,提升用户体验。本文以经典的MFC画图程序2009为例,深入探讨GDI绘图与双缓冲技术的实现细节,涵盖图形拾取
VC++实现高性能示波器波形图控件:GDI双缓冲与坐标映射实战
在桌面软件开发中,自定义控件是实现特定功能模块的核心技术。其原理在于通过底层图形接口直接操作
像素
,实现对界面元素的精细控制,从而在性能要求苛刻的场景中发挥关键价值。这项技术广泛应用于工业控制、
数据
采集和科学可视化等领域,尤其在对实时性有极致要求的波形显示中至关重要。本文聚焦于使用VC++与GDI/
GDI+
技术,深入探讨如何构建一个高性能的示波器波形图控件,其中双缓冲技术是解决画面闪烁、保证流畅渲染的关键,而高效的坐标映射算法则是实现波形缩放、平移等交互功能的基础。通过结合实时
数据
处理与图形渲染优化,开发者能
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章