现在的位置: 首页 > 综合 > 正文

C#.NET验证码智能识别学习笔记—04C#.Net图片操作

2019年09月15日 ⁄ 综合 ⁄ 共 2427字 ⁄ 字号 评论关闭

C#.NET验证码智能识别学习笔记---04C#.Net图片操作
技术qq交流群:JavaDream:251572072
 教程下载,在线交流:it.yunsit.cn
 ----------------------------------------------
 下面直接把代码贴出来了,注释写的很清楚不明白的留言把..
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing.Imaging;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace 验证码识别操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //一,图像操作
            //.net的语法细节这里不再说了
            //这个时候图片已经被加载到内存中了
            //这里用Using进行资源的释放,以为Bitmap是一个实现了IDisposable接口类型
            //关于using的用法看上一篇教程
            //using(Bitmap bitmap = (Bitmap)Image.FromFile(@"G:\NET学习\workspace\验证码识别系统用到的资源\abc.jpg"))
            // {
            //    //保存图片,第一个是图片路径,第二个参数是保存格式
            //    //bitmap.Save(@"G:\NET学习\workspace\验证码识别系统用到的资源\Test.gif",ImageFormat.Gif);
            //    //所有图片都是由像素点组成的,图片的像素坐标从左上角开始的,向右是x坐标,向下是y坐标
            //    //这里对图像的处理在c#.net中可以用getPixel,SetPixel方法取得设置像素
            //    //但是这种方法的效率是很低的,在c#.net也可以使用c++语法,使用指针操作效率最高
            //    //-------------------------------------------------------------------------
            //    //a.取得某个点的像素
            //     Color c = bitmap.GetPixel(3, 3);//取得这个坐标的像素

            //    //这里用getPixel,SetPixel方法对图片操作
            //     for (int i = 0; i < 100; i++) {
            //         bitmap.SetPixel(i, 0, Color.Red);
            //         //1.这时候修改的是内存中的图片
            //     }
            //    //2.保存图片
            //     bitmap.Save(@"G:\NET学习\workspace\验证码识别系统用到的资源\credream.jpg");
            ////b.取得像素的另一个方法 Color.FromArgb()
            //     Color colors = Color.FromArgb(255, 255, 255);
            //    //--------------------------------------------------------------
            //   

            //}

            //二,接下来说一个图像处理技巧:图片反色
            //复杂的程序一般不会直接操作本来的那个图片上操作的,应该新建一张图
            //
            using (Bitmap bitmap = (Bitmap)Image.FromFile(@"G:\NET学习\workspace\验证码识别系统用到的资源\abc.jpg"))
            { 
            //using (Bitmap bitmap = (Bitmap)Image.FromFile(@"G:\NET学习\workspace\验证码识别系统用到的资源\abc.jpg"))
            using (Bitmap newBmp = new Bitmap (bitmap .Width ,bitmap .Height ))
            {
                //a.取得宽度的所有点
                for (int i = 0; i < newBmp.Width;i++ ) {
                    //b.取得长度的所有的点
                    for (int j = 0; j < newBmp.Height;j++ ) {
                        Color c1 = bitmap.GetPixel(i, j);
                       //c.取得所在点的像素
                        Color c2 = Color.FromArgb(255 - c1.R, 255 - c1.G, 255 - c1.B);
                        //c.取得相反像素
                        newBmp.SetPixel(i, j, c2);
                        //d.在取得的位置进行相反像素的设置
                        //这时候是在内存中改的
                    }
                }
                newBmp.Save (@"G:\NET学习\workspace\验证码识别系统用到的资源\newqufan.jpg");
            }
            }         
        }
    }
}

抱歉!评论已关闭.