.net图片处理相关
来源:互联网 发布:电脑淘宝网页打不开 编辑:程序博客网 时间:2024/06/06 11:39
最近写一个小工具,主要作用是删除图片中的内容。因为用.net开发,整理相关知识备用一下。
说明:文章中部分代码从微软MSDN引用,引用地址:http://msdn.microsoft.com/zh-cn/library/system.drawing.imaging.bitmapdata.scan0(v=VS.80).aspx
1、图像文件的处理方法:
1)使用System.drawing.Image加载图片文件(常用的gif,jpg,png格式都可以),加载后转成Bitmap,再用BitmapData进行操作。
示例代码如下:
' Create a new bitmap.
Dim bmp As New Bitmap("c:\fakePhoto.jpg")
' Lock the bitmap's bits.
Dim rect As New Rectangle(0, 0, bmp.Width, bmp.Height)
Dim bmpData As System.Drawing.Imaging.BitmapData = bmp.LockBits(rect, Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat)
' Get the address of the first line.
Dim ptr As IntPtr = bmpData.Scan0
2)再借助System.Runtime.InteropServices.Marshal,直接对加载的图像的内存信息操作,改变颜色值就可以达到修改图像内容的作用。(实现代码参见引用链接)
这样的操作方式主要是改进运行速度,虽然可以用setPix和getPix作类似的操作,但效率很差,如果图片分辨率高,程序会因处理时间太长而无响应。
2、图像内容的处理:
1)目标:首先扫描纸张内容,只保留纸张中打印(黑白打印机)留下的内容,其它干扰内容删除。
2)干扰内容分析:
纸张本身的颜色,因扫描机器的原因,纸张不一定成白色,首先处理的是纸张自己的灰色。测试后颜色值在120左右(上下各差15)范围的颜色,也可以在界面上设置滚动条,让用户根据生成效果自行调整。
非黑色的其它笔迹,打印机打印的是黑色(也包含亮度不足的灰色),这与其它颜色的最大差别在于,黑色值的RGB之间理论上是相等的,实际会有10到50的偏差,借助这个规律,将大于偏差的点删除,即可删除其它笔迹颜色。
笔迹加强,最好的方法是用3*3的卷积加强灰色的字迹,这里简单处理成以前后相信四个像素的均值为基准,将当前计算的像素颜色值像均值靠拢。基本上可以改进字迹的清晰度。
3)待处理问题:
图片像素较多时,处理速度还是比较慢的。即使在操作内存,循环一次所有像素,次数还是很多的。对蓝黑色(钢笔)处理能力有限,只起到模糊作用了。对铅笔类的处理也不好。
- .net图片处理相关
- 图片处理相关
- android 图片相关处理
- 图片的相关处理
- asp.net图片处理
- .NET 处理图片缩略图
- .Net图片处理函数
- JavaScript 处理图片相关操作
- JavaScript 处理图片相关操作
- Android图片处理相关资料
- ios图片处理相关问题
- angular 图片处理相关指令
- jsp中图片处理相关操作
- jsp中图片处理相关操作
- jsp中图片处理相关操作
- jsp中图片处理相关操作
- jsp中图片处理相关操作
- PHP图片处理GD库及相关
- 《当程序员的那些狗日日子》(三十一)特殊任务
- linux的线程同步机制
- the Struts dispatcher cannot be found. 在struts2中出现的问题
- SecureCRT 5.0序列号
- 将string转换为DateTime
- .net图片处理相关
- JSP编码以及乱码解决总结
- Network Game - Network Communication Model 2
- cookie生成和访问的简单逻辑
- Asp.net window.open弹出子窗体,刷新主窗体
- 一个DSP程序员应具备的素质
- GridView1设置序列号
- Android开发之GSM驱动模块详细分析(一)
- mysql怎样查询当月的定单数?