VB.net 简单的处理图片,黑白(类库——7)
我们看,这一张图片使我们用手机拍的图片,不经过处理,打印出来就是灰的
在Photoshop里可以通过调整色阶,选择黑色的再选择白色的,就可以清晰化了

拍照时注意摊平,我这是扫描的彩色模式,作为测试
看VB.net如何处理
本文参考的csdn大佬的文章,vb.net 教程 5-15 图像处理之内存处理6就改了一个参数
import:
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Runtime.InteropServices
写函数:value可以自己调节,不一定只是180
''' ''' 图片黑白处理,记得使用多线程调用函数''' ''' 黑白数值常量,建议从128开始调,范围为0~255(byte)''' 要处理的图片''' 处理后的图片 Public Function BlackWhite(value As Byte, bmp As Bitmap)Dim destImg As New Bitmap(bmp.Width, bmp.Height)Dim sourceData As BitmapData = bmp.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb)Dim destData As BitmapData = destImg.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb)Dim pSource As IntPtr = sourceData.Scan0Dim allBytes As Integer = sourceData.Stride * sourceData.HeightDim rgbvalues() As ByteReDim rgbvalues(allBytes - 1)Marshal.Copy(pSource, rgbvalues, 0, allBytes)Dim pos As Integer = 0Dim R, G, B As IntegerDim avgValue As IntegerFor j As Integer = 0 To sourceData.Height - 1For i As Integer = 0 To sourceData.Width - 1B = rgbvalues(pos)G = rgbvalues(pos + 1)R = rgbvalues(pos + 2)avgValue = (B + G + R) / 3If avgValue >= value Then avgValue = 255 Else avgValue = 0rgbvalues(pos) = avgValuergbvalues(pos + 1) = avgValuergbvalues(pos + 2) = avgValuepos += 3Nextpos = pos + sourceData.Stride - sourceData.Width * 3NextDim pDest As IntPtr = destData.Scan0Marshal.Copy(rgbvalues, 0, pDest, allBytes)bmp.UnlockBits(sourceData)destImg.UnlockBits(destData)Return destImgEnd Function
调用:
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.ClickPic.Image = GDI.BlackWhite(180, New Bitmap("C:\Users\Administrator\Desktop\example.jpg"))End Sub
效果很好,可以去除一些褶皱,多余的背景
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
