C#使用内存法Marshal 方法和BitMapData处理任意24位彩色图像
来源:互联网 发布:大脚插件for mac 编辑:程序博客网 时间:2024/05/20 00:09
Marshal提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法。
命名空间:System.Runtime.InteropServices
程序集:mscorlib(在 mscorlib.dll 中)
c#中Marshal.Copy方法的使用
Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制。
if (curBitmap != null) { //位图矩形 Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height); //以可读写的方式锁定全部位图像素 System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat); //得到首地址 IntPtr ptr = bmpData.Scan0; //24位bmp位图字节数 int bytes = bmpData.Stride * bmpData.Height; //定义位图数组 byte[] rgbValues = new byte[bytes]; //复制被锁定的位图像值到该数组内 System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes); //灰度化 double colorTemp = 0; for (int i = 0; i < bmpData.Height; i++) { //利用公式(2.2)计算灰度值,只处理每行中是图像像素的数据,舍弃未用空间 for (int j = 0; j < bmpData.Width * 3; j += 3) { colorTemp = rgbValues[i * bmpData.Stride + j + 2] * 0.299 + rgbValues[i * bmpData.Stride + j + 1] * 0.587 + rgbValues[i * bmpData.Stride + j] * 0.114;//之需改动此公式就可以改变灰度化图像 //R=G=B rgbValues[i * bmpData.Stride + j + 2] = rgbValues[i * bmpData.Stride + j + 1] = rgbValues[i * bmpData.Stride + j] = (byte)colorTemp; } } //把数组复制回位图 System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes); //解锁位图像素 curBitmap.UnlockBits(bmpData) //对窗体进行重新绘制,这将强制执行paint事件处理程序 Invalidate();
阅读全文
0 0
- C#使用内存法Marshal 方法和BitMapData处理任意24位彩色图像
- C# BitmapData和Marshal.Copy()用法
- C# 图像 24位转32位(真彩色)
- 使用BitmapData实现图像的高速处理
- (转)C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
- C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
- 8叉数算法处理将24位真彩色变为8位伪彩色图像
- 处理彩色图像快速方法
- 【图像处理】使用CImage类将彩色图像转换成8位灰色图像
- c#中Marshal.Copy方法的使用
- c#中Marshal.Copy()方法的使用
- c#中Marshal.Copy()方法的使用
- c#中Marshal.Copy()方法的使用
- 24位真彩色图像转换为16位高彩色图像的实现方法及效果改进
- 使用GDI+将24位真彩色图像转换为8位灰度图像
- C#实现彩色图像灰度处理
- C/C++ BMP(24位真彩色)图像处理(2)------图像の截取
- C/C++ BMP(24位真彩色)图像处理(4)------图像の旋转
- 自定义checkbox的样式
- 20171009模拟赛总结
- JNI的替代者—使用JNA访问Java外部功能接口
- Apache集成版环境(phpStudy)配置安https安全套接字层SSL
- 上传文件过大导致报错
- C#使用内存法Marshal 方法和BitMapData处理任意24位彩色图像
- 理解Http/2原理
- CSS3媒体查询使用
- 2017.10.10 shell中的日期问题
- SpringBoot(3) Spring Boot属性配置文件详解
- Linux ALSA音频框架分析三:ALSA框架
- ooqzxdJeroboam v7.30 Bilingual 1CD瑰就
- Java cipher加密与解密
- Python学习笔记(六):数据可视化