C# Bitmap读写内存像素位数据(unsafe)
1、首先,我们了解下.net支持的图片格式,在ImageFormat类。常用格式Bmp,jpeg,png,gif这些都是支持的。
2、然后,我们来了解一下.net支持的像素格式,如图,有灰度,有16位彩色,24位颜色,32位透明色等等。详细请查阅PixelFormat类。
3、如图,使用LockBits函数锁定一块兔脒巛钒图像区域,返回可读写的BitmapData内存数据管理对象。第一个参数Rectangle类型,指定要锁定区域。第二个参数ImageLockMode,指定郭搏厝厨锁定方式,通常为ReadWrite读写。第三个参数PixelFormat,指定像素格式类型。
4、在处理锁定区域的代码部分,需要创建unsafe块。数据是用byte*指针访问的。使用如图代码定位像素。Offset是计算的偏移。
5、是荣用如图代码,利用计算的偏移,交换内存中的两个字节(代表R和G的字节),实现图片修改效果。(代码修改了图片左上1/4)
6、使用如图代码,清零了R,G分量。注意,这样的代码,以及配套计算的Offset,是在当前Pixel掂迎豢畦Format(32位ARGB)的格式下使用的。如果是其它的图片格式,需要另外代码,修改各分量。
7、修改过后的Bitmap,可以调用Save函数保存到文件。默认会保存为bmp格式,较大。如图,原图才800多K,保存后3.85MB.
8、Save函数指定第二个参数,ImageFormat按格式保存。注意,文件格式不是通过后缀名设定的。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:78
阅读量:91
阅读量:28
阅读量:95
阅读量:25