胖熊NET,有趣实用的生活常识!

最新更新文章排行手机版

胖熊NET!

热门搜索:
当前位置: > 母婴

aspupload

时间:2024-03-06 06:34:02人气:91作者:用户投稿

组件AspJpeg

一、为图片添加水印<%DimJpeg'//声明变量SetJpeg=Server.CreateObject("Persits.Jpeg")'//调用组件Jpeg.OpenServer.MapPath("aaa.JPG")'//原图片位置Jpeg.Canvas.Font.Color=&H000000'//水印字体颜色Jpeg.Canvas.Font.Family="宋体"'//水印字体Jpeg.Canvas.Font.Size=14'//水印字体大小Jpeg.Canvas.Font.Bold=False'//是否粗体,粗体用:TrueJpeg.Canvas.Font.BkMode=&HFFFFFF'//字体背景颜色Jpeg.Canvas.Print10,10,"梅河口论坛MHKBBS.COM"'//水印文字,两个数字10为水印的xy坐标Jpeg.SaveServer.MapPath("aaa_05.jpg")'//生成有水印的新图片及保存位置SetJpeg=Nothing'//注销组件,释放资源Response.Write"<imgsrc=aaa_05.jpg>"'//在该页显示生成水印后的图片%>

二、生成缩略图<%DimJpeg'//声明变量SetJpeg=Server.CreateObject("Persits.Jpeg")'//调用组件Jpeg.OpenServer.MapPath("aaa.JPG")'//原图位置Jpeg.Width=Jpeg.OriginalWidth/4'//设图片宽度为原图的四分之一Jpeg.Height=Jpeg.OriginalHeight/4'//设图片高度为原图的四分之一Jpeg.Sharpen1,130'//设定锐化效果Jpeg.SaveServer.MapPath("aaa_small.jpg")'//生成缩略图位置及名称SetJpeg=Nothing'//注销组件,释放资源Response.Write"<imgsrc=aaa_small.jpg>"'//在该页显示生成缩略图%>

aspjpeg组件高级使用方法介绍aspjpeg是一款非常强大的图片处理组件,纯英文版本。不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印。可能是因为纯英文的缘故。这里我就是针对这些问题谈谈aspjpeg的高级用法。这里的技术主要包括:图片缩略图片水印安全码技术图片切割图片合并数据库支持更多不常用的方法介绍以及相关的一些实用技术aspjpeg唯一点不足的就是输出方式比较单一。在这里,我们主要谈将图片处理保存后再调用的这种输出方法。另外,本人比较懒,所以有些代码仍然引用于原文档,不懂的地方偶会加以解释!学过vb或者.net的同志肯定一看就明白了。刷子来着。呵呵。一、图片缩略<%SetJpeg=Server.CreateObject("Persits.Jpeg")调用组件Path=Server.MapPath("images")&"\\clock.jpg"待处理图片路径Jpeg.OpenPath打开图片高与宽为原图片的1/2Jpeg.Width=Jpeg.OriginalWidth/2Jpeg.Height=Jpeg.OriginalHeight/2保存图片Jpeg.SaveServer.MapPath("images")&"\\clock_small.jpg"%><IMGSRC="images/clock_small.jpg">查看处理的图片二、图片水印<%SetJpeg=Server.CreateObject("Persits.Jpeg")Jpeg.OpenServer.MapPath("images/dodge_viper.jpg")开始写文字Jpeg.Canvas.Font.Color=&000000'red颜色Jpeg.Canvas.Font.Family="CourierNew"字体Jpeg.Canvas.Font.Bold=True是否加粗Jpeg.Canvas.Print10,10,"Copyright(c)XYZ,Inc."打印坐标x打印坐标y需要打印的字符以下是对图片进行边框处理Jpeg.Canvas.Pen.Color=&H000000'black颜色Jpeg.Canvas.Pen.Width=2画笔宽度Jpeg.Canvas.Brush.Solid=False是否加粗处理Jpeg.Canvas.Bar1,1,Jpeg.Width,Jpeg.Height起始X坐标起始Y坐标输入长度输入高度Jpeg.SaveServer.MapPath("images/dodge_viper_framed.jpg")保存%>三、安全码安全码的道理和加水印差不多,很多朋友问我要具体的代码技术,在这里我就写出来和大家分享,一般人我还不告诉他。呵呵。<%生成安全码的函数www.knowsky.comfunctionmake_randomize(max_len,w_n)max_len生成长度,w_n:0可能包含字母,1:只为数字randomizeforintcounter=1tomax_lenwhatnext=int((1-0+1)*rnd+w_n)ifwhatnext=0thenupper=122lower=97elseupper=57lower=48endifstrnewpass=strnewpass&chr(int((upper-lower+1)*rnd)+lower)nextmake_randomize=strnewpassendfunction%>生成安全码的图片。当然你要预先准备一张背景图哦<%random_num=make_randomize(4,1)生成4位数字的安全码session("random_num")=random_num为什么调用session,没有session的安全码是完全没有意义的。呵呵SetJpeg=Server.CreateObject("Persits.Jpeg")调用组件Jpeg.OpenServer.MapPath("infos/random_pic/random_index.gif")打开准备的图片Jpeg.Canvas.Font.Color=&H006699Jpeg.Canvas.Font.Family="ArialBlack"Jpeg.Canvas.Font.Bold=falseJpeg.Canvas.PrintText0,-2,random_numjpeg.saveServer.MapPath("infos/random_pic/random_index.bmp")保存%><imgsrc="infos/random_pic/random_index.bmp"border="0"align="absmiddle">自己做做看。呵呵。四、图片切割一直以来,对aspjpeg不了解的人以为是无法用它来进行切割的。其实有这样的一个方法的cropx1,y1,x2,y2切割长方形左上角x坐标,y坐标右下角x坐标y坐标下面我就做一个演示哈SetJpeg=Server.CreateObject("Persits.Jpeg")jpeg.openserver.MapPath("/pic/1.gif")jpeg.width=70Jpeg.Height=Jpeg.OriginalHeight*70/jpeg.Originawidthjpeg.crop0,0,70,52开始切割其实是把超过52象素的下部分去掉jpeg.saveserver.MapPath("/temp_pic/small_1.gif")保存怎么样,很简单吧五、图片合并我们这里是要把logo图片加到dodge_viper.jpg图片上去其实,图片合并的方法也可以用来动态打水印哦SetPhoto=Server.CreateObject("Persits.Jpeg")PhotoPath=Server.MapPath("images")&"\\dodge_viper.jpg"Photo.OpenPhotoPathSetLogo=Server.CreateObject("Persits.Jpeg")LogoPath=Server.MapPath("images")&"\\clock.jpg"Logo.OpenLogoPathLogo.Width=70Logo.Height=Logo.Width*Logo.OriginalHeight/Logo.OriginalWidthPhoto.DrawImage0,0,LogoPhoto.SendBinary这里用了sendBinary的输出方法。当然,你也可以先保存更改后的dodge_viper.jpg,再输入也可以。我个人不大喜欢用sendBinary方法,在网速慢的时候容易出错。在速度方面也不怎样。呵呵。六、数据库支持这里不多说了。其实就是Binary方法,大家知道图片存进数据库只能存为二进制的文件的。所以代码就懒得写了。七、更多方法介绍Canvas.Line(Left,Top,Right,Bottom)画一条直线Canvas.Ellipse(Left,Top,Right,Bottom)画出一个椭圆Canvas.Circle(X,Y,Radius)画出一个圆Canvas.Bar(Left,Top,Right,Bottom)画出一个长方形,上面有代码介绍了Canvas.Font.ShadowColor文字阴影颜色Canvas.Font.ShadowXOffsetAsLong阴影X坐标设定Canvas.Font.ShadowYOffsetAsLongY坐标设定Canvas.Font.BkModeAsString文字背景========================================今天给大家讲的是ASP给图片加水印的知识ASP给图片加水印是需要组件的...常用的有aspjpeg和中国人自己开发的wsImage...前者有30天的免费...后者完全免费...当然我们要用国人的产品了..嘿嘿..组件可以到我的垃圾场下载http://aknife.ys168.com(下载3.0版本的那个)注册组件的方法:命令提示符下输入"regsvr32[Dll路径]"就可以了图片添加水印无非就是获的图片大小,然后把水印写上去..ASP代码只是起个控制组件的作用.用代码来说明一切吧.一:获得图片大小(这里是用象素值表示的.学PhotoShop的朋友都应该明白)<%setobj=server.CreateObject("wsImage.Resize")''调用组件obj.LoadSoucePicserver.mappath("25.jpg")''打开图片,图片名字是25.jpgobj.GetSourceInfoiWidth,iHeightresponse.write"图片宽度:"&iWidth&"<br>"''获得图片宽度response.write"图片高度:"&iHeight&"<br>"''获得图片高度strError=obj.errorinfoifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing%>二:添加文字水印<%setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")''装载图片obj.Quality=75obj.TxtMarkFont="华文彩云"''设置水印文字字体obj.TxtMarkBond=false''设置水印文字的粗细obj.MarkRotate=0''水印文字的旋转角度obj.TxtMarkHeight=25''水印文字的高度obj.AddTxtMarkserver.mappath("txtMark.jpg"),"带你离境",&H00FF00&,10,70strError=obj.errorinfo''生成图片名字,文字颜色即水印在图片的位置ifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing%>三:添加图片水印<%setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")''装载图片obj.LoadImgMarkPicserver.mappath("blend.bmp")''装载水印图片obj.Quality=75obj.AddImgMarkserver.mappath("imgMark.jpg"),315,220,&hFFFFFF,70strError=obj.errorinfo''生成图片名字,文字颜色即水印在图片的位置ifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing%>其实给图片添加水印就这么简单.然后我再说下WsImage.dll组件的另外两个主要用法.包括:剪裁图片,生成图片的缩略图.还是以我的习惯,用代码加注释说明:剪裁图片:<%setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")obj.Quality=75obj.cropImageserver.mappath("25_crop.jpg"),100,10,200,200''定义裁剪大小和生成图片名字strError=obj.errorinfoifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing%>详细注释:裁减图片用到了WsImage的CropImage方法.其中定义生成图片时候,100,10是左上角的裁减点,即离图片左边是100象素,顶端10象素.后两个200代表的是裁减的宽带和高和高度.生成图片缩略图:<%setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")''加载图片obj.Quality=75obj.OutputSpicserver.mappath("25_s.jpg"),0.5,0.5,3''定义缩略图的名字及大小strError=obj.errorinfoifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing%>详细说明:产生缩略图共有四种导出方式:(1)obj.OutputSpicserver.mappath("25_s.jpg"),200,150,0200为输出宽,150为输出高,这种输出形式为强制输出宽高,可能引起图片变形。(2)obj.OutputSpicserver.mappath("25_s.jpg"),200,0,1以200为输出宽,输出高将随比列缩放。(3)obj.OutputSpicserver.mappath("25_s.jpg"),0,200,2以200为输出高,输出宽将随比列缩放。(4)obj.OutputSpicserver.mappath("25_s.jpg"),0.5,0.5,3第一个0.5表示生成的缩略图是原图宽的一半,即表示宽缩小比例。第二个0.5表示生成的缩略图是原图高的一半,即表示高缩小比例。宽高的缩小比例一致意味着将对原图进行比例缩小。宽高的缩放比例如果大于1,则对原图进行放大。另一个介绍的

<%'利用AspJpeg组件给上传图片自动加水印,在使用该组件前请测试你的服务器是否支持。'在你的上传文件(如:upfilea.asp)中加入以下代码:

'程序代码DimJpeg''水印部分代码开始SetJpeg=Server.CreateObject("Persits.Jpeg")Jpeg.OpenServer.MapPath(FileName)'获取图片,根据实际情况更改Jpeg.Canvas.Font.Color=&330066''绿色'''设置文字水印颜色Jpeg.Canvas.Font.Family="宋体"'设置文字字体Jpeg.Canvas.Font.Size=12'设置字体大小Jpeg.Canvas.Pen.Width=2'画笔宽度Jpeg.Canvas.Font.Quality=1'设置文字清晰度Jpeg.Canvas.Font.Bold=True'设置字体加粗Jpeg.Canvas.Print180,420,"Lounger.cn"'定义水印文字Jpeg.SaveServer.MapPath(FileName)'保存文件,根据实际情况更改SetJpeg=Nothing'注销对象水印部分结束'注销对象水印部分结束%>

<%'ASP给图片加水印是需要组件的...常用的有aspjpeg软件和中国人自己开发的wsImage软件,可以上网搜索下载这两个软件,推荐使用咱们中国人自己开发的wsImage,毕竟是中文版,容易操作.'注册组件的方法:'命令提示符下输入"regsvr32[Dll路径]"就可以了.'图片添加水印无非就是获得图片大小,然后把水印写上去..ASP代码只是起个控制组件的作用.用代码来说明一切吧.

'一:获得图片大小(这里是用象素值表示的.学PhotoShop的朋友都应该明白)setobj=server.CreateObject("wsImage.Resize")''调用组件obj.LoadSoucePicserver.mappath("25.jpg")''打开图片,图片名字是25.jpgobj.GetSourceInfoiWidth,iHeightresponse.write"图片宽度:"&iWidth&"<br>"''获得图片宽度response.write"图片高度:"&iHeight&"<br>"''获得图片高度strError=obj.errorinfoifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing

'二:添加文字水印setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")''装载图片obj.Quality=75obj.TxtMarkFont="华文彩云"''设置水印文字字体obj.TxtMarkBond=false''设置水印文字的粗细obj.MarkRotate=0''水印文字的旋转角度obj.TxtMarkHeight=25''水印文字的高度obj.AddTxtMarkserver.mappath("txtMark.jpg"),"带你离境",&H00FF00&,10,70strError=obj.errorinfo''生成图片名字,文字颜色即水印在图片的位置ifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing

'三:添加图片水印setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")''装载图片obj.LoadImgMarkPicserver.mappath("blend.bmp")''装载水印图片obj.Quality=75obj.AddImgMarkserver.mappath("imgMark.jpg"),315,220,&hFFFFFF,70strError=obj.errorinfo''生成图片名字,文字颜色即水印在图片的位置ifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing

%>

<%'其实给图片添加水印就这么简单.然后我再说下WsImage.dll组件的另外两个主要用法.包括:'剪裁图片,生成图片的缩略图.'还是以我得习惯,用代码加注释说明:

'剪裁图片:setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")obj.Quality=75obj.cropImageserver.mappath("25_crop.jpg"),100,10,200,200''定义裁剪大小和生成图片名字strError=obj.errorinfoifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing

'详细注释:裁减图片用到了WsImage的CropImage方法.其中定义生成图片时候,100,10是左上角的裁减点,即离图片左边是100象素,顶端10象素.后两个200代表的是裁减的宽带和高和高度.

''----------------------------------------------------------------'''生成图片缩略图:setobj=server.CreateObject("wsImage.Resize")obj.LoadSoucePicserver.mappath("25.jpg")''加载图片obj.Quality=75obj.OutputSpicserver.mappath("25_s.jpg"),0.5,0.5,3''定义缩略图的名字及大小strError=obj.errorinfoifstrError<>""thenresponse.writeobj.errorinfoendifobj.freesetobj=nothing

'详细说明:'产生缩略图共有四种导出方式:'(1)obj.OutputSpicserver.mappath("25_s.jpg"),200,150,0'200为输出宽,150为输出高,这种输出形式为强制输出宽高,可能引起图片变形。'(2)obj.OutputSpicserver.mappath("25_s.jpg"),200,0,1'以200为输出宽,输出高将随比列缩放。'(3)obj.OutputSpicserver.mappath("25_s.jpg"),0,200,2'以200为输出高,输出宽将随比列缩放。'(4)obj.OutputSpicserver.mappath("25_s.jpg"),0.5,0.5,3'第一个0.5表示生成的缩略图是原图宽的一半,即表示宽缩小比例。'第二个0.5表示生成的缩略图是原图高的一半,即表示高缩小比例。'宽高的缩小比例一致意味着将对原图进行比例缩小。宽高的缩放比例如果大于1,则对原图进行放大。

%>--------------------------------------------------------------

1、什么是AspJpeg?AspJpeg是一款功能强大的基于MicrosoftIIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一半也只是牵涉到图片缩略图和图片水印,这与其为英文版本有着密切的关系。AspJpeg可以使用很少的代码在您的ASP/ASP.Net应用程序上动态的创建高质量的缩略图象,支持的图像格式有:JPEG,GIF,BMP,TIFF,PNGAspJpeg主要可以做到:生成缩略图片生成水印图片图片合并图片切割数据库支持安全码技术2、AspJpeg功能摘要支持JPEG,GIF,BMP,TIFF和PNG格式图片.输出格式始终为JPEG源图片可以来源于磁盘、内存、或者记录集(数据库)缩略图片可以保存到磁盘、内存、或者HTTP流支持三种更改大小方式:nearest-neighbor,bilinear,andbicubic.可以在图片之上添加图片或者文字.支持画中画支持复制,反转,旋转,锐化,灰度调节.可以调节压缩比率,以达到最佳输出效果和大小.从Jpeg图片中抽取EXIF和IPTC数据.CMYK-RGB转换Read/writeaccesstoindividualpixelsofanimage.(从图象中对任意象素进行读/写存取。)3、AspJpeg系统需求Windows95/98/NT/2000/XP/2003,andIIS4.0+andASP/ASP.NET,orVisualBasic5.0+,orVisualC++5.0+,oranydevelopmentenvironmentsupportingCOM.4、AspJpeg安装全新安装:在AspJpeg安装过程中输入序列号即可,如果安装位置磁盘格式为NTFS,则可能出现访问权限问题,需手工设置安装目录对Everyone有访问权限。更新安装:如果之前有装过其它版本的AspJpeg组件,则需要先卸载原来的组件,再进行新版本的安装。先停止IISNetStopiisadmin/y卸载旧版组件regsvr32/uPath/aspjpeg.dl(Path为安装路径)重启IISNetStartw3svc然后再进行全新安装或复制AspJpeg.dll文件到安装目录进行手工安装:regsvr32Path/aspjpeg.dll(Path为安装路径)如果在正常安装过程中没有输入序列号或手工安装则必须在注册表中加入以下项,为方便起见您可以直接将以下代码保存为.reg文档并导入注册表:WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\\SOFTWARE\\PersitsSoftware\\AspUpload3\\RegKey]@="21764-40765-60456"

5、如何创建一个AspJpeg实例?SetJpeg=Server.CreateObject("Persits.Jpeg")

6、如何查看到期时间(是否注册成功)?SetJpeg=Server.CreateObject("Persits.Jpeg")Response.WriteJpeg.Expires

注册成功则到期时间为:9999-9-9否则为:安装日期加1个月期限7、如何用AspJpeg组件生成图片缩略图?<%SetJpeg=Server.CreateObject("Persits.Jpeg")'创建实例Path=Server.MapPath("../images/apple.jpg")'处理图片路径Jpeg.OpenPath'打开图片'调整宽度和高度为原来的50%Jpeg.Width=Jpeg.OriginalWidth/2Jpeg.Height=Jpeg.OriginalHeight/2Jpeg.SaveServer.MapPath("apple_small.jpg")'保存图片到磁盘Jpeg.Close:SetJpeg=Nothing%>

8、如何用AspJpeg组件生成图片水印?<%SetJpeg=Server.CreateObject("Persits.Jpeg")Jpeg.OpenServer.MapPath("images/dodge_viper.jpg")开始写文字Jpeg.Canvas.Font.Color=&000000''red颜色Jpeg.Canvas.Font.Family="CourierNew"字体Jpeg.Canvas.Font.Bold=True是否加粗Jpeg.Canvas.Print10,10,"Copyright(c)XYZ,Inc."打印坐标x打印坐标y需要打印的字符以下是对图片进行边框处理Jpeg.Canvas.Pen.Color=&H000000''black颜色Jpeg.Canvas.Pen.Width=2画笔宽度Jpeg.Canvas.Brush.Solid=False是否加粗处理Jpeg.Canvas.Bar1,1,Jpeg.Width,Jpeg.Height起始X坐标起始Y坐标输入长度输入高度Jpeg.SaveServer.MapPath("images/dodge_viper_framed.jpg")保存%>

9、如何用AspJpeg组件进行图片合并?AspJpeg1.3+enablesyoutoplaceimagesontopofeachotherviathemethodDrawImage.Tousethismethod,youmustcreatetwoinstancesoftheAspJpegobjectsandpopulatebothofthemwithimagesviacallstoOpen(orOpenBinary).WhencallingCanvas.DrawImage,the2ndinstanceofAspJpegispassedasanargumenttothismethod,alongwiththeXandYoffsets(inpixels):使用该方法,您必须创建两个AspJpeg实例对象<%SetJpeg1=Server.CreateObject("Persits.Jpeg")SetJpeg2=Server.CreateObject("Persits.Jpeg")Jpeg1.OpenServer.MapPath("t.jpg")Jpeg2.OpenServer.MapPath("t1.jpg")Jpeg1.Canvas.DrawImage10,10,Jpeg2'optionalargumentsomittedjpeg1.saveServer.mappath("tt.jpg")%>

10、如何用AspJpeg组件进行图片切割?AspJpeg1.1+isalsocapableofcuttingoffedgesfrom,orcropping,theresultantthumbnailsviathemethodCrop(x0,y0,x1,y1).Thesizeofthecroppedimageisspecifiedbythecoordinatesoftheupper-leftandlower-rightcornerswithintheresultantthumbnail,nottheoriginallargeimage.<%SetJpeg=Server.CreateObject("Persits.Jpeg")Jpeg.OpenServer.MapPath("t.jpg")jpeg.Crop20,30,jpeg.Width-20,jpeg.Height-10jpeg.saveServer.mappath("tt.jpg")Response.write("<imgsrc=tt.jpg>")%>

11、如何用AspJpeg组件创建安全码?创建安全码原理上和创建水印差不多。<%functionmake_randomize(max_len,w_n)'max_len生成长度,w_n:0可能包含字母,1:只为数字randomizeforintcounter=1tomax_lenwhatnext=int((1-0+1)*rnd+w_n)ifwhatnext=0thenupper=122lower=97elseupper=57lower=48endifstrnewpass=strnewpass&chr(int((upper-lower+1)*rnd)+lower)nextmake_randomize=strnewpassendfunction'生成安全码的图片。random_num=make_randomize(4,1)''生成4位数字的安全码session("random_num")=random_num'为么调用session,没有session的安全码是完全没有意义的。呵呵.SetJpeg=Server.CreateObject("Persits.Jpeg")'调用组件Jpeg.OpenServer.MapPath("t.jpg")'打开准备的图片Jpeg.Canvas.Font.Color=&HFFFFFFJpeg.Canvas.Font.Family="ArialBlack"Jpeg.Canvas.Font.Bold=falseJpeg.Canvas.PrintText0,-2,random_numjpeg.saveServer.MapPath("tt.jpg")'保存%><imgsrc="tt.jpg"border="0"align="absmiddle">

12、如何让AspJpeg组件支援数据库?图片存进数据库只能以二进制数据保存,这里即利用AspJpeg的Binary方法,下面以两个AspJpeg用户手册上的代码为例,具体请参考AspJpeg用户手册:OpeningImagesfromMemory<%'UsingADO,opendatabasewithanimageblobstrConnect="DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("../db/aspjpeg.mdb")Setrs=Server.CreateObject("adodb.recordset")SQL="selectimage_blobfromimages2where&Request("id")rs.OpenSQL,strConnect,1,3SetJpeg=Server.CreateObject("Persits.Jpeg")'OpenimagedirectlyfromrecordsetJpeg.OpenBinaryrs("image_blob").Value'Resizejpeg.Width=Request("Width")'Setnewheight,preserveoriginalaspectratiojpeg.Height=jpeg.OriginalHeight*jpeg.Width/jpeg.OriginalWidthJpeg.SendBinaryrs.Close%>

OutputtoMemory<%Setrs=Server.CreateObject("adodb.recordset")rs.Open"images",strConnect,1,3rs.AddNewrs("image_blob").Value=Jpeg.Binaryrs.Update%>

--------------------------------------------------------------------------------

ASp使用AspJpeg组件制作透明文字水印技术支持:1、aspjpeg能对图片水印进行透明度调整,不能对文字水印调整,2、aspjpeg支持Binary,可以Jpeg.OpenBinary读取,可以Jpeg.sendBinary,也可Jpeg.Binary赋值思路:1、把原始的图片数据二进制度赋值给TempA,2、将文字水印处理后的图片数据二进制赋值给TempB,3、以TempB作为"图片水印",附加在TempA上,调整透明度,输出就ok了

思路很简单,代码也很简单:

<%LocalFile="d:\\apple.jpg"TargetFile="d:\\myapple.jpg"DimJpegSetJpeg=Server.CreateObject("Persits.Jpeg")IfErr.Number=-2147221005thenResponse.write"没有这个组件,请安装!"'检查是否安装AspJpeg组件Response.End()EndIfJpeg.Open(LocalFile)'打开图片Iferr.numberthenResponse.write"打开图片失败,请检查路径!"Response.End()EndifDimTempA'原始图片的二进制数据DimTempB'加了不透明文字水印的图片DimTempC'最终效果TempA=Jpeg.Binary'将原始数据赋给TempA'=========加文字水印=================Jpeg.Canvas.Font.Color=&Hfffffff'水印文字颜色Jpeg.Canvas.Font.Family=Arial'字体Jpeg.Canvas.Font.Bold=True'是否加粗Jpeg.Canvas.Font.Size=35'字体大小Jpeg.Canvas.Font.ShadowColor=&H000000'阴影色彩Jpeg.Canvas.Font.ShadowYOffset=1Jpeg.Canvas.Font.ShadowXOffset=1Jpeg.Canvas.Brush.Solid=TrueJpeg.Canvas.Font.Quality=5'输出质量Jpeg.Canvas.PrintTextJpeg.OriginalWidth/2-150,Jpeg.OriginalHeight/2,"www.Tsingfeng.com"'水印位置及文字TempB=Jpeg.Binary'将文字水印处理后的值赋给TempB,这时,文字水印没有不透明度'============调整文字透明度================SetMyJpeg=Server.CreateObject("Persits.Jpeg")MyJpeg.OpenBinaryTempASetLogo=Server.CreateObject("Persits.Jpeg")Logo.OpenBinaryTempBMyJpeg.DrawImage0,0,Logo,0.2'0.3是透明度TempC=MyJpeg.Binary'将最终结果赋值给TempC,这时也可以生成目标图片了response.BinaryWriteTempC'将二进输出给浏览器MyJpeg.Save(TargetFile)setTempA=nothingsetTempB=nothingsetTempC=nothingJpeg.closeMyJpeg.CloseLogo.Close%>

-----------------------------------------------------------------------------------------------------

AspJpeg组件给图片加透明图片水印

为图片加水印DimJpeg,Jpeg1'建立实例SetJpeg=Server.CreateObject("Persits.Jpeg")SetJpeg1=Server.CreateObject("Persits.Jpeg")'打开要加水印的图片Jpeg.OpenServer.mappath(路径)'透明图片水印图Jpeg1.OpenServer.mappath("../Images/sy.gif")'合并图Jpeg.Canvas.DrawImage0,Jpeg.OriginalHeight/2-33,Jpeg1,0.6,&HFFFFFF'保存文件Jpeg.SaveServer.mappath(路径)'注销对象SetJpeg=NothingSetJpeg1=Nothing加透明图片水印,实际上就是将两个图合并,最关键的就是这一句:

Jpeg.Canvas.DrawImageJpeg.OriginalWidth/2-22,Jpeg.OriginalHeight/2-33,Jpeg1,0.6,&HFFFFFF

其中0.6是透明度,1是不透明,值越小,透明越大,0就什么也看不见了。&HFFFFFF这个参数是最关键的,这是透明图片水印图的背景色,这个参数必须与透明图片水印图的背景一样,不然的话就实现不了透明了。就是我们不想看到的那一部分色

------------------------------------------------------------------------------------------AspJpeg1.8版本之前未提供PrintTextEx方法,实现文字透明水印是相当麻烦的,基本思路是这样的:AspJpeg支持透明图片水印DrawImage,所以采用图片水印来间接实现文字透明水印。1.读取原始图片内容赋于A2.将加入文字水印的图片内容赋予B3.将B作为水印图片附加在A上,调整透明度并输出。

从AspJpeg1.8版本开始,AspJpeg提供了比PrintText更为灵活的文本绘图方法PrintTextEx,PrintTextEx使用FreeType?来源程序库,可以在任何背景上呈现高品质的反锯齿文本。

这是一个ASP版本的利用PrintTextEx方法产生文字透明水印简单示例程序:

<%DimobjJpegDimstrTextSetobjJpeg=Server.CreateObject("Persits.Jpeg")objJpeg.OpenServer.MapPath("t.jpg")strText="Copyright?2008AboBloG"objJpeg.Canvas.Font.Size=30objJpeg.Canvas.Font.Color=&HFF0000'十六进制颜色值objJpeg.Canvas.Font.Opacity=0.7'不透明度,1为不透明objJpeg.Canvas.PrintTextExstrText,objJpeg.Width/2,objJpeg.Height-20,objJpeg.WindowsDirectory&"\\Fonts\\Arial.ttf"objJpeg.SaveServer.MapPath("tt.jpg")SetobjJpeg=Nothing%>

PrintTextEx方法参考:FunctionPrintTextEx(TextAsString,XAsLong,YAsLong,FontPathAsString)AsLong

Text-要打印的文字字符串(Unicode格式),如果含有CR/LR字符则多行显示。X,Y-打印位置,XY轴坐标。FontPath-指定字体文件的物理路径。只要知道字体路径即可,并不需要系统注册。

返回值:返回文本宽度,如果字符串分割为多行,则返回宽度最长的。

以下字体属性影响PrintTextEx:

Font.Color-指定当前文字颜色,以一个十六进制值来表示,例如:&HFF0000FF蓝色Font.Rotation-旋转角度Font.Size-指定文字大小,单位像素(px)Font.Spacing-行距Font.Width-指定文本宽度,超出自动换行。Font.Align-指定文本对齐方式。0-左(默认),1-右,2-居中,3-两端对齐,当值为非0时,必须指定Font.Width值Font.Opacity-指定文本的不透明度,有效值范围[0-1],0完全透明,1完全不透明

-------------------------------------------------------------------------------------------------

<%

SubCreateView(Image1,Image2)'//Image1原图(被处理图片)'//Image2小图片(需要附加的小图标,最好是gif的透明图片)'//Tmpimage预览图'//ImageMode是否添加边框upload_ViewType=0LogoPath=Image2SetLogobox=Server.CreateObject("Persits.Jpeg")Logobox.OpenLogoPath'//读取添加的图片。Logobox.Width=100'//用做水印的图片的宽度值(像素)Logobox.Height=20'//用做水印的图片的高度值(像素)'//读取原图,并准备添加水印。Setogvbox=Server.CreateObject("Persits.Jpeg")'//读取要处理的原文件。ogvbox.OpenTrim(Image1)Setmidogvbox=Server.CreateObject("Persits.Jpeg")midogvbox.OpenTrim(Image1)midogvbox.Width=200midogvbox.Height=(midogvbox.Originalheight/midogvbox.OriginalWidth)*200imgname=mid(Image1,InStrRev(Image1,"\\")+1)imgpath=left(Image1,InStrRev(Image1,"\\"))midogvbox.Saveimgpath&"mid"&imgnamesetmidogvbox=nothingIfogvbox.OriginalWidth<Cint(ImageWidth)orogvbox.Originalheight<Cint(ImageHeight)ThenF_Viewname=""Setogvbox=NothingExitSubElseogvbox.Canvas.Pen.Color=&HFFff00'//增加水印后图片的边框色彩。ogvbox.Canvas.Pen.Width=1'//增加水印后图片的边框宽度。ogvbox.Canvas.Brush.Solid=False'//边框内是否填充颜色,你可以试试看值为True时的效果^o^ogvbox.DrawImageogvbox.width-105,ogvbox.height-25,Logobox,1,&HFFFFFF'//水印图片的起始坐标,我这里是放在图片的正中间。0.4是透明度,我这里是半透明,1表示不透明'ogvbox.Canvas.Bar0,0,ogvbox.Width,ogvbox.Height'//水印可用的范围。我这里表示左上角至右下角,即整张图片的任意位置都可加水印。ogvbox.SaveImage1'//根据以上参数生成增加水印后的图片文件'ogvbox.Width=ogvbox.width'ogvbox.height=ogvbox.height'ogvbox.Sharpen1,120'ogvbox.SaveServer.MapPath(Tmpimage)'//生成增加水印后的图片的预览图片。EndIfSetogvbox=NothingSetLogobox=Nothingendsub%>

<!-------------------q.asp---------------->

<%

'CallCreateView("photoname.jpg","2")

'CreateView(原图路径,文字/图像水印)

'----------------------------------

'创建预览图片及打水印:callCreateView(文件的路径,要添加的水印图片文件)

'DesignbySeven(See7di@Gmail.com)(www.7di.net)

SubCreateView(imagename,inttype)

DimObject,objFont,img,Obj,LogoPath,sWidth,sHeight

img="logo.jpg"'//LOGO文件

sWidth="100"'//LOGO的宽

sHeight="49"'//LOGO的高

LogoPath=Server.MapPath(img)'//LOGO路径

SetObj=Server.CreateObject("Persits.Jpeg")'//建立LOGO对象

SetObject=Server.CreateObject("Persits.Jpeg")'//建立原图对象

'OnErrorresumeNext

Obj.OpenLogoPath'//读取LOGO

Iferr>0Then

Response.Write("对不起,获取LOGO图片文件失败!")

Response.End()

Endif

Object.OpenTrim(Server.MapPath(imagename))'//读取原图

Iferr>0Then

Response.Write("对不起,获取需要处理的图片文件失败!")

Response.End()

Endif

Obj.Width=sWidth'//加入图片的原宽度

Obj.Height=sHeight'//加入图片的原高度

'\\\\如果原图比LOGO大

IfObject.width>Cint(Obj.Width)andObject.Height>Cint(Obj.Height)Then

strDo="yes"

Endif

Ifinttype=1Then

Object.Canvas.Font.Color=&HFF0000'//文字的颜色

Object.Canvas.Font.Family="Verdana"'//文字的字体

Object.Canvas.Font.Bold=True'//是否加粗

Object.Canvas.Print10,10,"www.sxjdypw.cn/"'//打印坐标x打印坐标y需要打印的字符

Object.Canvas.Pen.Color=&H000000'//背景颜色

Object.Canvas.Pen.Width=1'//画笔宽度

Object.Canvas.Brush.Solid=False'//是否加粗处理

Object.Canvas.Bar0,0,Object.Width,Object.Height'//起始X坐标起始Y坐标输入长度输入高度

Else

IfstrDo="yes"Then

Object.Canvas.Pen.Color=&HFFFFFF'//边框的颜色

Object.Canvas.Pen.Width=1'//边框的粗细

Object.Canvas.Brush.Solid=false'//图片边框内是否填充颜色

'Object.DrawImageObject.Width/2,Object.Height/2,Obj,0.7,&HFFFFFF,90'//加入图片的位置以及坐标,透明度(添加水印图片)

Object.DrawImageObject.Width-125,Object.Height-74,Obj,1,&HFFFFFF,50

Object.Canvas.Bar0,0,Object.Width,Object.Height'//图片边框线的位置坐标

Object.Width=Object.Width

Object.height=Object.height

Endif

EndIf

Object.SaveServer.MapPath(imagename)'//生成文件

SetObj=Nothing

EndSub

%>

aspupload

标签:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123@。cc举报,一经查实,本站将立刻删除。