1.把网页保存为图片
https://blog.csdn.net/tomy2426214836/article/details/90057168
2.切割图片
/// <summary>
///
/// </summary>
/// <param name="b"></param>
/// <param name="StartX">x坐标</param>
/// <param name="StartY">y坐标</param>
/// <param name="iWidth">宽</param>
/// <param name="iHeight">高</param>
/// <returns></returns>
public static Bitmap KiCut(Bitmap b, int StartX, int StartY, int iWidth, int iHeight)
{
if (b == null)
{
return null;
}
int w = b.Width;
int h = b.Height;
if (StartX >= w || StartY >= h)
{
return null;
}
if (StartX + iWidth > w)
{
iWidth = w - StartX;
}
if (StartY + iHeight > h)
{
iHeight = h - StartY;
}
try
{
Bitmap bmpOut = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bmpOut);
g.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel);
g.Dispose();
return bmpOut;
}
catch
{
return null;
}
}
3.处理图片
https://blog.csdn.net/tomy2426214836/article/details/89763461
4.识别图片
static List<string> GetResult(string imagePath)
{
List<string> list = new List<string>();
string wordsip = string.Empty;
string wordsport = string.Empty;
System.IO.FileStream fs = new System.IO.FileStream(imagePath, FileMode.Open, FileAccess.Read);
int byteLength = (int)fs.Length;
byte[] fileBytes = new byte[byteLength];
fs.Read(fileBytes, 0, byteLength);
//文件流关閉,文件解除锁定
fs.Close();
Image img1 = Image.FromStream(new MemoryStream(fileBytes));
Bitmap img = new Bitmap(img1);
Bitmap bitmap = removeLine(img);
Bitmap imgnew = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format32bppArgb);//获得验证码图片
Graphics g = Graphics.FromImage(imgnew);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.Clear(Color.White);
g.DrawImage(bitmap, 0, 0);
imgnew.Save(imagePath);
// 如果有可选参数
var options = new Dictionary<string, object>{
{"detect_direction", "true"},
{"probability", "true"}
}; // 带参数调用通用文字识别(高精度版)
var bs = File.ReadAllBytes(imagePath);
Thread.Sleep(1000);
var result = client.AccurateBasic(bs, options);
var words = result["words_result"];
if (words == null) return list;
Regex regip = new Regex("((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))");
Regex regport = new Regex("^[1-9]$|(^[1-9][0-9]$)|(^[1-9][0-9][0-9]$)|(^[1-9][0-9][0-9][0-9]$)|(^[1-6][0-5][0-5][0-3][0-5]$)");
for (int i = 0; i < words.Count(); i++)
{
if (i < words.Count() - 1)
{
wordsip = words[i]["words"].ToString();
wordsport = words[i + 1]["words"].ToString();
if (regip.IsMatch(wordsip) && regport.IsMatch(wordsport))
{
list.Add(wordsip + "','" + wordsport);
i++;
}
}
}
return list;
}
4.效果图
4.1
4.2
4.3