见到有人做的,他是把百度验证码的图片下载下来显示的,不清楚怎么弄--------------- 下载下来了有什么用,不一样要识别图片?using System; using System.Collections.Generic; using System.Text; using System.Collections; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices;
namespace BallotAiying2 { class UnCodebase { public Bitmap bmpobj; public UnCodebase(Bitmap pic) { bmpobj=new Bitmap(pic);//转换为Format32bppRgb }
见到有人做的,他是把百度验证码的图片下载下来显示的,不清楚怎么弄--------------- 下载下来了有什么用,不一样要识别图片?using System; using System.Collections.Generic; using System.Text; using System.Collections; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices;
namespace BallotAiying2 { class UnCodebase { public Bitmap bmpobj; public UnCodebase(Bitmap pic) { bmpobj=new Bitmap(pic);//转换为Format32bppRgb }
2.头像上传,跟模拟登录差不多,可用webbrowser来实现。
求解百度上传头像,那个post的数据我看了好久都看不明白,求解啊
见到有人做的,他是把百度验证码的图片下载下来显示的,不清楚怎么弄---------------
下载下来了有什么用,不一样要识别图片?using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
namespace BallotAiying2
{
class UnCodebase
{
public Bitmap bmpobj;
public UnCodebase(Bitmap pic)
{
bmpobj=new Bitmap(pic);//转换为Format32bppRgb
}
/**////<summary>
///根据RGB,计算灰度值
///</summary>
///<paramnameparamname="posClr">Color值</param>
///<returns>灰度值,整型</returns>
private int GetGrayNumColor(System.Drawing.Color posClr)
{
return (posClr.R*19595+posClr.G*38469+posClr.B*7472)>>16;
}
/**////<summary>
///灰度转换,逐点方式
///</summary>
public void GrayByPixels()
{
for(int i=0;i<bmpobj.Height;i++)
{
for(int j=0;j<bmpobj.Width;j++)
{
int tmpValue=GetGrayNumColor(bmpobj.GetPixel(j,i));
bmpobj.SetPixel(j,i,Color.FromArgb(tmpValue,tmpValue,tmpValue));
}
}
}
/**////<summary>
///去图形边框
///</summary>
///<paramnameparamname="borderWidth"></param>
public void ClearPicBorder(int borderWidth)
{
for(int i=0;i<bmpobj.Height;i++)
{
for(int j=0;j<bmpobj.Width;j++)
{
if(i<borderWidth||j<borderWidth||j>bmpobj.
Width-1-borderWidth||i>bmpobj.Height-1-borderWidth)
bmpobj.SetPixel(j,i,Color.FromArgb(255,255,255));
}
}
}
/**////<summary>
///灰度转换,逐行方式
///</summary>
public void GrayByLine()
{
Rectangle rec=new Rectangle(0,0,bmpobj.Width,bmpobj.Height);
BitmapData bmpData=bmpobj.LockBits(rec,ImageLockMode.ReadWrite,bmpobj.PixelFormat);
//PixelFormat.Format32bppPArgb);
//bmpData.PixelFormat=PixelFormat.Format24bppRgb;
IntPtr scan0=bmpData.Scan0;
int len=bmpobj.Width*bmpobj.Height;
int []pixels=ne wint[len];
Marshal.Copy(scan0,pixels,0,len);
//对图片进行处理
int GrayValue=0;
for(inti=0;i<len;i++)
{
GrayValue=GetGrayNumColor(Color.FromArgb(pixels[i]));
pixels[i]=(byte)(Color.FromArgb(GrayValue,GrayValue,GrayValue)).ToArgb();
}
bmpobj.UnlockBits(bmpData);
}
/**////<summary>
///得到有效图形并调整为可平均分割的大小
///</summary>
///<paramnameparamname="dgGrayValue">灰度背景分界值</param>
///<paramnameparamname="CharsCount">有效字符数</param>
///<returns></returns>
public void GetPicValidByValue(int dgGrayValue,int CharsCount)
{
intpos x1=bmpobj.Width;intposy1=bmpobj.Height;
intpos x2=0;intposy2=0;
for(int i=0;i<bmpobj.Height;i++)//找有效区
{
for(int j=0;j<bmpobj.Width;j++)
{
int pixelValue=bmpobj.GetPixel(j,i).R;
if(pixelValue<dgGrayValue)//根据灰度值
{
if(posx1>j)posx1=j;
if(posy1>i)posy1=i;
if(posx2<j)posx2=j;
if(posy2<i)posy2=i;
};
};
};
//确保能整除
int Span=CharsCount-(posx2-posx1+1)%CharsCount;//可整除的差额数
if(Span<CharsCount)
{
int leftSpan=Span/2;//分配到左边的空列,如span为单数,则右边比左边大1
if(posx1>leftSpan)
posx1=posx1-leftSpan;
if(posx2+Span-leftSpan<bmpobj.Width)
posx2=posx2+Span-leftSpan;
}
//复制新图
Rectangle cloneRect=new Rectangle(posx1,posy1,posx2-posx1+1,posy2-posy1+1);
bmpobj=bmpobj.Clone(cloneRect,bmpobj.PixelFormat);
}
/**////<summary>
///得到有效图形,图形为类变量
///</summary>
///<paramnameparamname="dgGrayValue">灰度背景分界值</param>
///<paramnameparamname="CharsCount">有效字符数</param>
///<returns></returns>
public void GetPicValidByValue(int dgGrayValue)
{
int posx1=bmpobj.Width;int posy1=bmpobj.Height;
int posx2=0;int posy2=0;
for(int i=0;i<bmpobj.Height;i++)//找有效区
{
for(int j=0;j<bmpobj.Width;j++)
{
int pixelValue=bmpobj.GetPixel(j,i).R;
if(pixelValue<dgGrayValue)//根据灰度值
{
if(posx1>j)posx1=j;
if(posy1>i)posy1=i;
if(posx2<j)posx2=j;
if(posy2<i)posy2=i;
};
};
};
//复制新图
Rectangle cloneRect=new Rectangle(posx1,posy1,posx2-posx1+1,posy2-posy1+1);
bmpobj=bmpobj.Clone(cloneRect,bmpobj.PixelFormat);
}
/**////<summary>
///得到有效图形,图形由外面传入
///</summary>
///<paramnameparamname="dgGrayValue">灰度背景分界值</param>
///<paramnameparamname="CharsCount">有效字符数</param>
///<returns></returns>
public Bitmap GetPicValidByValue(Bitmap singlepic,int dgGrayValue)
{
int posx1=singlepic.Width;int posy1=singlepic.Height;
int posx2=0;int posy2=0;
for(int i=0;i<singlepic.Height;i++)//找有效区
{
for(int j=0;j<singlepic.Width;j++)
{
int pixelValue=singlepic.GetPixel(j,i).R;
if(pixelValue<dgGrayValue)//根据灰度值
{
if(posx1>j)posx1=j;
if(posy1>i)posy1=i;
if(posx2<j)posx2=j;
if(posy2<i)posy2=i;
};
};
};
//复制新图
Rectangle cloneRect=new Rectangle(posx1,posy1,posx2-posx1+1,posy2-posy1+1);
return singlepic.Clone(cloneRect,singlepic.PixelFormat);
}
/**////<summary>
///平均分割图片
///</summary>
///<paramnameparamname="RowNum">水平上分割数</param>
///<paramnameparamname="ColNum">垂直上分割数</param>
///<returns>分割好的图片数组</returns>
public Bitmap []GetSplitPics(int RowNum,int ColNum)
{
if(RowNum==0||ColNum==0)
retur nnull;
int singW=bmpobj.Width/RowNum;
int singH=bmpobj.Height/ColNum;
Bitmap []PicArray=new Bitmap[RowNum*ColNum];
Rectangle cloneRect;
for(int i=0;i<ColNum;i++)//找有效区
{
for(int j=0;j<RowNum;j++)
{
cloneRect=newRectangle(j*singW,i*singH,singW,singH);
PicArray[i*RowNum+j]=bmpobj.Clone(cloneRect,bmpobj.PixelFormat);//复制小块图
}
}
return PicArray;
}
/**////<summary>
///返回灰度图片的点阵描述字串,1表示灰点,0表示背景
///</summary>
///<paramnameparamname="singlepic">灰度图</param>
///<paramnameparamname="dgGrayValue">背前景灰色界限</param>
///<returns></returns>
public string GetSingleBmpCode(Bitmap singlepic,int dgGrayValue)
{
Color piexl;
string code="";
for(int posy=0;posy<singlepic.Height;posy++)
for(int posx=0;posx<singlepic.Width;posx++)
{
piexl=singlepic.GetPixel(posx,posy);
if(piexl.R<dgGrayValue)//Color.Black)
code=code+"1";
else
code=code+"0";
}
return code;
}
}
}
见到有人做的,他是把百度验证码的图片下载下来显示的,不清楚怎么弄---------------
下载下来了有什么用,不一样要识别图片?using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
namespace BallotAiying2
{
class UnCodebase
{
public Bitmap bmpobj;
public UnCodebase(Bitmap pic)
{
bmpobj=new Bitmap(pic);//转换为Format32bppRgb
}
/**////<summary>
///根据RGB,计算灰度值
///</summary>
///<paramnameparamname="posClr">Color值</param>
///<returns>灰度值,整型</returns>
private int GetGrayNumColor(System.Drawing.Color posClr)
{
return (posClr.R*19595+posClr.G*38469+posClr.B*7472)>>16;
}
/**////<summary>
///灰度转换,逐点方式
///</summary>
public void GrayByPixels()
{
for(int i=0;i<bmpobj.Height;i++)
{
for(int j=0;j<bmpobj.Width;j++)
{
int tmpValue=GetGrayNumColor(bmpobj.GetPixel(j,i));
bmpobj.SetPixel(j,i,Color.FromArgb(tmpValue,tmpValue,tmpValue));
}
}
}
/**////<summary>
///去图形边框
///</summary>
///<paramnameparamname="borderWidth"></param>
public void ClearPicBorder(int borderWidth)
{
for(int i=0;i<bmpobj.Height;i++)
{
for(int j=0;j<bmpobj.Width;j++)
{
if(i<borderWidth||j<borderWidth||j>bmpobj.
Width-1-borderWidth||i>bmpobj.Height-1-borderWidth)
bmpobj.SetPixel(j,i,Color.FromArgb(255,255,255));
}
}
}
/**////<summary>
///灰度转换,逐行方式
///</summary>
public void GrayByLine()
{
Rectangle rec=new Rectangle(0,0,bmpobj.Width,bmpobj.Height);
BitmapData bmpData=bmpobj.LockBits(rec,ImageLockMode.ReadWrite,bmpobj.PixelFormat);
//PixelFormat.Format32bppPArgb);
//bmpData.PixelFormat=PixelFormat.Format24bppRgb;
IntPtr scan0=bmpData.Scan0;
int len=bmpobj.Width*bmpobj.Height;
int []pixels=ne wint[len];
Marshal.Copy(scan0,pixels,0,len);
//对图片进行处理
int GrayValue=0;
for(inti=0;i<len;i++)
{
GrayValue=GetGrayNumColor(Color.FromArgb(pixels[i]));
pixels[i]=(byte)(Color.FromArgb(GrayValue,GrayValue,GrayValue)).ToArgb();
}
bmpobj.UnlockBits(bmpData);
}
/**////<summary>
///得到有效图形并调整为可平均分割的大小
///</summary>
///<paramnameparamname="dgGrayValue">灰度背景分界值</param>
///<paramnameparamname="CharsCount">有效字符数</param>
///<returns></returns>
public void GetPicValidByValue(int dgGrayValue,int CharsCount)
{
intpos x1=bmpobj.Width;intposy1=bmpobj.Height;
intpos x2=0;intposy2=0;
for(int i=0;i<bmpobj.Height;i++)//找有效区
{
for(int j=0;j<bmpobj.Width;j++)
{
int pixelValue=bmpobj.GetPixel(j,i).R;
if(pixelValue<dgGrayValue)//根据灰度值
{
if(posx1>j)posx1=j;
if(posy1>i)posy1=i;
if(posx2<j)posx2=j;
if(posy2<i)posy2=i;
};
};
};
//确保能整除
int Span=CharsCount-(posx2-posx1+1)%CharsCount;//可整除的差额数
if(Span<CharsCount)
{
int leftSpan=Span/2;//分配到左边的空列,如span为单数,则右边比左边大1
if(posx1>leftSpan)
posx1=posx1-leftSpan;
if(posx2+Span-leftSpan<bmpobj.Width)
posx2=posx2+Span-leftSpan;
}
//复制新图
Rectangle cloneRect=new Rectangle(posx1,posy1,posx2-posx1+1,posy2-posy1+1);
bmpobj=bmpobj.Clone(cloneRect,bmpobj.PixelFormat);
}
/**////<summary>
///得到有效图形,图形为类变量
///</summary>
///<paramnameparamname="dgGrayValue">灰度背景分界值</param>
///<paramnameparamname="CharsCount">有效字符数</param>
///<returns></returns>
public void GetPicValidByValue(int dgGrayValue)
{
int posx1=bmpobj.Width;int posy1=bmpobj.Height;
int posx2=0;int posy2=0;
for(int i=0;i<bmpobj.Height;i++)//找有效区
{
for(int j=0;j<bmpobj.Width;j++)
{
int pixelValue=bmpobj.GetPixel(j,i).R;
if(pixelValue<dgGrayValue)//根据灰度值
{
if(posx1>j)posx1=j;
if(posy1>i)posy1=i;
if(posx2<j)posx2=j;
if(posy2<i)posy2=i;
};
};
};
//复制新图
Rectangle cloneRect=new Rectangle(posx1,posy1,posx2-posx1+1,posy2-posy1+1);
bmpobj=bmpobj.Clone(cloneRect,bmpobj.PixelFormat);
}
/**////<summary>
///得到有效图形,图形由外面传入
///</summary>
///<paramnameparamname="dgGrayValue">灰度背景分界值</param>
///<paramnameparamname="CharsCount">有效字符数</param>
///<returns></returns>
public Bitmap GetPicValidByValue(Bitmap singlepic,int dgGrayValue)
{
int posx1=singlepic.Width;int posy1=singlepic.Height;
int posx2=0;int posy2=0;
for(int i=0;i<singlepic.Height;i++)//找有效区
{
for(int j=0;j<singlepic.Width;j++)
{
int pixelValue=singlepic.GetPixel(j,i).R;
if(pixelValue<dgGrayValue)//根据灰度值
{
if(posx1>j)posx1=j;
if(posy1>i)posy1=i;
if(posx2<j)posx2=j;
if(posy2<i)posy2=i;
};
};
};
//复制新图
Rectangle cloneRect=new Rectangle(posx1,posy1,posx2-posx1+1,posy2-posy1+1);
return singlepic.Clone(cloneRect,singlepic.PixelFormat);
}
/**////<summary>
///平均分割图片
///</summary>
///<paramnameparamname="RowNum">水平上分割数</param>
///<paramnameparamname="ColNum">垂直上分割数</param>
///<returns>分割好的图片数组</returns>
public Bitmap []GetSplitPics(int RowNum,int ColNum)
{
if(RowNum==0||ColNum==0)
retur nnull;
int singW=bmpobj.Width/RowNum;
int singH=bmpobj.Height/ColNum;
Bitmap []PicArray=new Bitmap[RowNum*ColNum];
Rectangle cloneRect;
for(int i=0;i<ColNum;i++)//找有效区
{
for(int j=0;j<RowNum;j++)
{
cloneRect=newRectangle(j*singW,i*singH,singW,singH);
PicArray[i*RowNum+j]=bmpobj.Clone(cloneRect,bmpobj.PixelFormat);//复制小块图
}
}
return PicArray;
}
/**////<summary>
///返回灰度图片的点阵描述字串,1表示灰点,0表示背景
///</summary>
///<paramnameparamname="singlepic">灰度图</param>
///<paramnameparamname="dgGrayValue">背前景灰色界限</param>
///<returns></returns>
public string GetSingleBmpCode(Bitmap singlepic,int dgGrayValue)
{
Color piexl;
string code="";
for(int posy=0;posy<singlepic.Height;posy++)
for(int posx=0;posx<singlepic.Width;posx++)
{
piexl=singlepic.GetPixel(posx,posy);
if(piexl.R<dgGrayValue)//Color.Black)
code=code+"1";
else
code=code+"0";
}
return code;
}
}
} 你好,我现在想知道的是如何上传头像,这个能帮帮忙么?
这个是例子,跟着做就行