1、什么是AspJpeg?
AspJpeg是一款功能强大的基于MicrosoftIIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩略图和图片水印,这与其为英文版本有着密切的关系。
AspJpeg可以使用很少的代码在您的ASP/ASP.Net应用程序上动态的创建高质量的缩略图象,支持的图象格式有:JPEG,GIF,BMP,TIFF,PNG
AspJpeg主要可以做到:
生成缩略图片
生成水印图片
图片合并
图片切割
数据库支持
安全码技术
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,and
IIS4.0+andASP/ASP.NET,or
VisualBasic5.0+,or
VisualC++5.0+,or
anydevelopmentenvironmentsupportingCOM.
4、AspJpeg安装
全新安装:
在AspJpeg安装过程中输入序列号即可,如果安装位置磁盘格式为NTFS,则可能出现访问权限问题,需手工设置安装目录对Everyone有访问权限。
更新安装:
如果之前有装过其它版本的AspJpeg组件,则需要先卸载原来的组件,再进行新版本的安装。
先停止IIS
NetStopiisadmin/y
卸载旧版组件
regsvr32/uPath/aspjpeg.dl(Path为安装路径)
重启IIS
NetStartw3svc
然后再进行全新安装或复制AspJpeg.dll文件到安装目录进行手工安装:
regsvr32Path/aspjpeg.dll(Path为安装路径)
如果在正常安装过程中没有输入序列号或手工安装则必须在注册表中加入以下项,为方便起见您可以直接将以下代码保存为.reg文档并导入注册表:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINESOFTWAREPersitsSoftwareAspUpload3RegKey]
@="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/2
Jpeg.Height=Jpeg.OriginalHeight/2
Jpeg.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'optionalargumentsomitted
jpeg1.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-10
jpeg.saveServer.mappath("tt.jpg")
Response.write("<imgsrc=tt.jpg>")
%>
11、如何用AspJpeg组件创建安全码?
创建安全码原理上和创建水印差不多。
<%
functionmake_randomize(max_len,w_n)'max_len生成长度,w_n:0可能包含字母,1:只为数字
randomize
forintcounter=1tomax_len
whatnext=int((1-0+1)*rnd+w_n)
ifwhatnext=0then
upper=122
lower=97
else
upper=57
lower=48
endif
strnewpass=strnewpass&chr(int((upper-lower+1)*rnd)+lower)
next
make_randomize=strnewpass
endfunction
'生成安全码的图片。
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=&HFFFFFF
Jpeg.Canvas.Font.Family="ArialBlack"
Jpeg.Canvas.Font.Bold=false
Jpeg.Canvas.PrintText0,-2,random_num
jpeg.saveServer.MapPath("tt.jpg")'保存
%>
<imgsrc="tt.jpg"border="0"align="absmiddle">
12、如何让AspJpeg组件支援数据库?
图片存进数据库只能以二进制数据保存,这里即利用AspJpeg的Binary方法,下面以两个AspJpeg用户手册上的代码为例,具体请参考AspJpeg用户手册:
OpeningImagesfromMemory
<%'UsingADO,opendatabasewithanimageblob
strConnect="DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("../db/aspjpeg.mdb")
Setrs=Server.CreateObject("adodb.recordset")
SQL="selectimage_blobfromimages2whereid="&Request("id")
rs.OpenSQL,strConnect,1,3
SetJpeg=Server.CreateObject("Persits.Jpeg")
'Openimagedirectlyfromrecordset
Jpeg.OpenBinaryrs("image_blob").Value
'Resize
jpeg.Width=Request("Width")
'Setnewheight,preserveoriginalaspectratio
jpeg.Height=jpeg.OriginalHeight*jpeg.Width/jpeg.OriginalWidth
Jpeg.SendBinary
rs.Close
%>
OutputtoMemory
<%
...
Setrs=Server.CreateObject("adodb.recordset")
rs.Open"images",strConnect,1,3
rs.AddNew
rs("image_blob").Value=Jpeg.Binary
rs.Update
...
%>