我们在做web程序的时候,经常会遇到一些图像处理方面的问题。今天,我们将总结需要图像处理的问题。也可以算是对自己学习过程的总结,希望能给大家一些启发。1.验证码。当我们注册或登录一些网站时,可能会遇到需要填写验证码的地方。当时我们还不明白这样的画面是什么。其实是随机生成的图片,所以我们需要在后台新建一个aspx页面或者ashx通用程序处理页面来负责生成这样的图片。这里有一个例子向你展示这样一个过程!首先,我们创建一个新的登录页面来模拟用户登录。代码如下:
Div表trtd账号:/TDT dasp : text box id=' text box 1 ' runat=' server '/ASP : text box/TD/trtd密码:/TDT dasp : text box id=' text box 2 ' runat=' server ' text mode=' password '/ASP : text box/TD/trtd验证码:/TDT dasp : image id=' image1 ' runat=' server ' image URL=' validate to。
然后创建一个新的ValidateNo.aspx页面来生成验证码图片。在这个aspx页面中,您只需要在构造函数中编写以下代码:
受保护的void Page_Load(对象发送方,event args e){ Random r=new Random();int i=r.Next(1000,9999);//生成一个四位随机数Bitmap bit=new Bitmap(100,40);//生成大小为100,40 graphics g=graphics . from image(bit)的位图;//创建一个绘图实例,并使用上面创建的位图作为画板。当然,这里选择一张已有的图片作为画板。g .画线(新钢笔(画笔。蓝色),新点(0,10),新点(100,10))只需要将FromImage()中的参数转置到现有的Image对象;画线(新钢笔(画笔。绿色黄色),新点(0,25),新点(100,25));//画两条直线起到模糊验证码的作用。g .拉绳(即tostring(),newfont ('Tahoma ',30),画笔。绿色,newpointf (0,0));//在画板bit.save (response.outputstream,imageformat.jpeg)上绘制生成的四位验证码;//将位图保存为JPEG格式会话[' validate no ']=I . tostring();///seesession值保存生成的验证码值,以便与用户登录时输入的验证码值进行比较。回应。内容类型='图像/JPEG ';//将输入类型更改为“图像/jpeg”响应。end();}刚才我们在代码中说生成的随机验证码会保存在SESION中,所以在登录的时候,我们可以将session中的值和用户输入的值进行比较,来判断用户输入的验证码是否正确,所以我们在登录页面的aspx.cs页面上这样做:(这只是一个模拟测试。在实际开发中,如果验证码、密码、账号正确,会导致新的页面)
受保护的void btndl_Click(对象发送者,事件参数){ if (Session['ValidateNo']!=null) {字符串s=会话['ValidateNo']。ToString();if (txtyzm。文字!=s) {响应。write(' script alert(' s ')/script ');} else { Response。write(' script alert(' OK ')/script ');}} else {response。write ('scriptalert('验证码尚不存在!)/script’);}}其次,给图片添加文字
有时候我们可以看到个人空间或者主页中的一些图片添加了相应的文字,就像腾讯微博一样,一张图片发出来,就会显示腾讯微博的文字。现在我将向你展示如何给图片添加单词。
首先,我们创建一个新的aspx页面,页面布局如下:
表格样式='背景:浅蓝色' trtd选择上传文件:/tddasp : file upload ID=' file upload 1 ' runat=' server '/tdtdtdasps : button ID=' BTN upload ' runat=' server ' text=' upload picture ' onclick=' btnupload _ Click '/TD/tr TD colspan=' 3 ' ASP : image ID=' TouXiang ' runat=' server '/tr/Table然后我们在句柄中执行以下操作='') {字符串扩展名=路径。GetExtension(FileUpload1。FileName);//获取后缀字符串filename=datetime . now . year . tostring()datetime . now . month . tostring()datetime . now . minute . tostring();//重命名StringPath=服务器。mappath(' . ')' images '上传图片的文件扩展名,格式为年、月、年;文件上传1。PostedFile.SaveAs(路径);//将图片保存到指定路径。位图img=新位图(路径);//创建一个新的位图对象,并将其用作画板。graphics g=graphics . from image(img);拉带(‘你好,奥利弗!’,新字体(' Tahoma ',30),画笔。绿色黄色,新要点f (20,20));//在图片g.Dispose()的(20,20)处写“Hello Olive”;新路径=服务器。MapPath(' . ')' \images\' fileName '_New '扩展名;img。保存(新路径);//重命名并保存带文字的图片,删除原图片img。dispose();如果(文件。存在(路径)){文件。删除(路径);} touxiangpath=' ~/images/' fileName ' _ New '扩展名;} else { response . write(' script alert('请先选择要上传的文件!)/script’);}}效果如图:
第三,生成缩略图。如今,许多博客、个人主页、空间等都有编辑个人信息的设置。编辑个人信息时,可能需要上传头像。我们来谈谈如何生成缩略图头像。对于页面布局,我们仍然参考上面的布局:但是我们需要在table/table中添加另一行来显示生成的缩略图。首先,我们需要创建一个新的CutImage类CutImage.cs,专门用于缩放图片。如下:///summary(缩放此图片的代码参考博主king-Two Colors)///Captured picture////Summary//Param name=' opath '原始图片路径/param ///param name='nPaht '新图片路径/param ///Param name='w '宽度的缩略图/param ///param name='h '高度的缩略图/param ///param name='mode '裁剪模式/Param代码:
公共静态void cutimg(字符串opath,字符串npaht,int w,int h,字符串模式){ Image oimg=Image .from file(Opath):int n width=w;int nto height=h;int x=0;int y=0;int oWidth=oimg .宽度;内部高度=oimg .高度;交换机模式:{案例' HW ' 3360//阿曼苏丹国,哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼打断;打断;w ' 3360//阿云娥,朱建安胡安安阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹ntoheight=owidth *高/nto width;打断;打断;h ' 3360//诶呦呦呦哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟,是郑晓雨同学ntowidth=owidth *高/n高度;打断;打断;case ' cut ' 3360//阿云娥~我爱你~绿筠小姐如果(oimg).宽度/oimg .高度(宽度/高度))高度=oimg .高度;oWidth=oimg .高度* n宽度/n高度;y=0;x=(oimg).宽度-owi DTH)/2;} else { oWidth=oimg .宽度;高度=oimg .宽度* nto height/nto width;x=0;y=(oimg).高度-高度)/2;}休息默认值:破:} //314BMP格式哎哎位图图像=新建位图(宽度、高度)://啁啾图形gp=图形FromImage(位图):gp(电影名)。插值模式=插值模式。高;gp(电影名)。平滑模式=系统绘图。2d。画画。平滑模式。高质量;//绿筠,老巴老巴老巴老巴gp(电影名)。清除(颜色)。透明的;gp(电影名)。绘图图像(oimg,新矩形(0,0,宽度,高度),新矩形(x,y,宽度,高度),图形单位.像素(像素)://杨俊钦先生尝试{位图。保存(npaht,系统)。画画。成像。图像格式。JPEG:} catch(异常e){ 0抛出e;}终于{ oimg }了。排列();位图。位图。排列();} }杨俊钦先生aspx?aspx阿云btnupload(建筑工人)唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟按一下阿叔阿叔阿叔阿叔阿叔阿叔阿叔:
受保护的void btnupload _ click(对象发送者,事件参数e){ if(file upload 1)} .文件名。Trim()!='){//.我.//.我.范思哲?范思哲?范思哲如果档案存在(路径)){ 0文件。删除(路径):}字符串p=服务器. MapPath(.))' images tou香路径=' ~/images/'文件名" _ new "扩展名;图香!图像网址香路径;角质图像(切割图像)。CutImg(newPath,p 'olive.jpg ',100,200,' cut ');//陆克文陆克文陆克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译:王克文翻译角质图像(切割图像)什么事共切魏冄,贺盛德贺盛德贺盛德奥丽芙使用jpeg文件交换格式存储的编码图像文件扩展名你说什么,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不。卢埃索托imageurl=' ~/images/olive。jpg ';} else {响应编写(' scriptalert('范思哲?范思哲我的天)/script ';} }阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金阿金:
不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,朱庇特?朱庇特?朱庇特,云娥与云娥同在,-你好-你好ImageCut.zip,吴亚玲吴亚玲吴亚玲。