简单的内存法操作BMP图像函数
来源:互联网 发布:linux 脚本优先级 编辑:程序博客网 时间:2024/04/26 13:13
内存法一般来说是c#三种图像操作方法中最快速的,不过要操纵内存指针,有出错的可能。
一般流程就是锁定图像——指针处理——解锁图像。
下面贴一个自己整理的操作函数。
注意,只在ARGB图像上通过。
C# Code
private void Points(Bitmap bmp)
{
Rectangle lockRect = new Rectangle(0, 0, bmp.Width, bmp.Height);//要锁定的范围,一般来说是整幅图片
BitmapData imgData = bmp.LockBits(lockRect, ImageLockMode.ReadOnly, bmp.PixelFormat);//锁定源图像
//ImageLockMode分为ReadOnly、WriteOnly和ReadWrite,对应只读、只写和读写
int rowOffset = imgData.Stride - bmp.Width * 4;//每一行的偏移量。因为要处理的是ARGB图像,所以*4
unsafe//因为需要操作指针,所以放在Unsafe中,记得打开允许“不安全代码”
{
byte *imgPtr = (byte *)imgData.Scan0.ToPointer();//指向锁定区域的第一个像素
for (int i = 0; i < bmp.Width; ++i)
{
for (int j = 0; j < bmp.Height; ++j)
{
imgPtr[0] = 255; //蓝,,给像素赋予特定颜色
imgPtr[1] = 255; //绿
imgPtr[2] = 255; //红
imgPtr[3] = 255; //Alpha
imgPtr += 4; // 偏移一个像素
}
imgPtr += rowOffset; // 偏移到下一行
}
}
bmp.UnlockBits(imgData);//解锁源图像
}
{
Rectangle lockRect = new Rectangle(0, 0, bmp.Width, bmp.Height);//要锁定的范围,一般来说是整幅图片
BitmapData imgData = bmp.LockBits(lockRect, ImageLockMode.ReadOnly, bmp.PixelFormat);//锁定源图像
//ImageLockMode分为ReadOnly、WriteOnly和ReadWrite,对应只读、只写和读写
int rowOffset = imgData.Stride - bmp.Width * 4;//每一行的偏移量。因为要处理的是ARGB图像,所以*4
unsafe//因为需要操作指针,所以放在Unsafe中,记得打开允许“不安全代码”
{
byte *imgPtr = (byte *)imgData.Scan0.ToPointer();//指向锁定区域的第一个像素
for (int i = 0; i < bmp.Width; ++i)
{
for (int j = 0; j < bmp.Height; ++j)
{
imgPtr[0] = 255; //蓝,,给像素赋予特定颜色
imgPtr[1] = 255; //绿
imgPtr[2] = 255; //红
imgPtr[3] = 255; //Alpha
imgPtr += 4; // 偏移一个像素
}
imgPtr += rowOffset; // 偏移到下一行
}
}
bmp.UnlockBits(imgData);//解锁源图像
}
0 0
- 简单的内存法操作BMP图像函数
- BMP图像的基本操作
- 获取bmp图像的函数.cpp
- 如何看懂bmp图像的内存存储格式
- 如何看懂bmp图像的内存存储格式
- 利用MFC简单的显示一个bmp图像
- C语言实现bmp图像的平移操作
- BMP图像的格式
- bmp图像的储存
- BMP的图像处理
- bmp图像的调色板
- QImage的save函数保存的bmp图像无法打开
- 2.2 BMP文件 灰度化 二值化 亮度调整有关BMP图像处理的底层函数
- 网上找到的读取BMP图像和显示BMP图像的两个函数,做过小小的改善
- jpeg to bmp 内存图像转换
- bmp操作函数和类
- bmp图像的数据信息
- bmp格式图像的读取
- C++网络爬虫的实现——WinSock编程
- 读写文件:每次读入大文件中的一行、读写.CSV文件
- iOS应用程序开发过程的简述
- 在Editplus中配置java的(带包)编译(javac)和运行(java)的方法
- android java.net.UnknownHostException: Unable to resolve host "...": No address associated 错误
- 简单的内存法操作BMP图像函数
- 我以前从来不会多想
- Socket网络编程常用的结构及函数小结
- javaweb新建helloworld项目
- 小晴天老师系列——可恶的墨水瓶(floodfill)
- ASP.NET 3.5 MVC框架深度解析
- OC基础--@property修饰符
- 开始
- 每天一个linux命令(4):mkdir命令