C#使用不安全指针来操作bitmap
2022/3/7 20:45:03
本文主要是介绍C#使用不安全指针来操作bitmap,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C#允许通过不安全指针实现像C++一样操作指针,这个速度是最快的。下面这个例子是修改一幅RGB图像的每个像素值,速度很快,测试一张2592*1944的彩色图像,只需要几ms就能够全部遍历。
/// <summary> /// 操作彩色图像 /// </summary> /// <param name="bitmap"></param> private void GetRBBytes(Bitmap bitmap) { if (bitmap != null) { int width = bitmap.Width; int height = bitmap.Height; int length = height * 3 * width; BitmapData data = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);//将图像放入内存 System.IntPtr Scan0 = data.Scan0;//获取指针头 int stride = data.Stride;//获取图像跨距宽度 int Tempcount = 0; unsafe { byte* p = (byte*)Scan0;//获取首个图像像素的地址 int offset = stride - width * 3; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { p[0] = (byte)20;//B p[1] = (byte)73;//G p[2] = (byte)100;//R } p += offset; } count = Tempcount; } bitmap.UnlockBits(data); this.pb_imageRgb.Image = bitmap; } }
这篇关于C#使用不安全指针来操作bitmap的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用
- 2024-01-23.NET开源的简单、快速、强大的前后端分离后台权限管理系统
- 2024-01-23C#对象二进制序列化优化:位域技术实现极限压缩