一、为图片添加水印
<%
Dim Jpeg '//声明变量
Set Jpeg = Server.CreateObject("Persits.Jpeg") '//调用组件
Jpeg.Open Server.MapPath("aaa.JPG") '//原图片位置
Jpeg.Canvas.Font.Color = &H000000 '//水印字体颜色
Jpeg.Canvas.Font.Family = "宋体" '//水印字体
Jpeg.Canvas.Font.Size = 14 '//水印字体大小
Jpeg.Canvas.Font.Bold = False '//是否粗体,粗体用:True
Jpeg.Canvas.Font.BkMode = &HFFFFFF '//字体背景颜色
Jpeg.Canvas.Print 10, 10, "梅河口论坛 MHKBBS.COM" '//水印文字,两个数字10为水印的xy坐标
Jpeg.Save Server.MapPath("aaa_05.jpg") '//生成有水印的新图片及保存位置
Set Jpeg = Nothing '//注销组件,释放资源
Response.Write "<img src=https://news.ytian678.com/skin/default/image/nopic.gif" '//在该页显示生成水印后的图片
%>
等
<%
'利用AspJpeg组件给上传图片自动加水印,在使用该组件前请测试你的服务器是否支持。
'在你的上传文件(如:upfilea.asp)中加入以下代码:
<%
'ASP给图片加水印是需要组件的...常用的有aspjpeg软件和中国人自己开发的wsImage软件,可以上网搜索下载这两个软件,推荐使用咱们中国人自己开发的wsImage,毕竟是中文版,容易操作.
'注册组件的方法:
'命令提示符下输入"regsvr32 [Dll路径]" 就可以了.
'图片添加水印无非就是获得图片大小,然后把水印写上去..ASP代码只是起个控制组件的作用.用代码来说明一切吧.
'二:添加文字水印
set obj=server.CreateObject("wsImage.Resize")
obj.LoadSoucePic server.mappath("25.jpg") ''装载图片
obj.Quality=75
obj.TxtMarkFont = "华文彩云" ''设置水印文字字体
obj.TxtMarkBond = false ''设置水印文字的粗细
obj.MarkRotate = 0 ''水印文字的旋转角度
obj.TxtMarkHeight = 25 ''水印文字的高度
obj.AddTxtMark server.mappath("txtMark.jpg"), "带你离境", &H00FF00&, 10, 70
strError=obj.errorinfo ''生成图片名字,文字颜色即水印在图片的位置
if strError<>"" then
response.write obj.errorinfo
end if
obj.free
set obj=nothing
%>
'剪裁图片:
set obj=server.CreateObject("wsImage.Resize")
obj.LoadSoucePic server.mappath("25.jpg")
obj.Quality=75
obj.cropImage server.mappath("25_crop.jpg"),100,10,200,200 ''定义裁剪大小和生成图片名字
strError=obj.errorinfo
if strError<>"" then
response.write obj.errorinfo
end if
obj.free
set obj=nothing
''----------------------------------------------------------------''
'生成图片缩略图:
set obj=server.CreateObject("wsImage.Resize")
obj.LoadSoucePic server.mappath("25.jpg") ''加载图片
obj.Quality=75
obj.OutputSpic server.mappath("25_s.jpg"),0.5,0.5,3 ''定义缩略图的名字及大小
strError=obj.errorinfo
if strError<>"" then
response.write obj.errorinfo
end if
obj.free
set obj=nothing
%>
--------------------------------------------------------------
5、如何创建一个AspJpeg实例?
Set Jpeg = Server.CreateObject("Persits.Jpeg")
注册成功则到期时间为:9999-9-9
否则为:安装日期加1个月期限
7、如何用AspJpeg组件生成图片缩略图?
<%
Set Jpeg = Server.CreateObject("Persits.Jpeg") '创建实例
Path = Server.MapPath("../images/apple.jpg") '处理图片路径
Jpeg.Open Path '打开图片
'调整宽度和高度为原来的50%
Jpeg.Width = Jpeg.OriginalWidth / 2
Jpeg.Height = Jpeg.OriginalHeight / 2
Jpeg.Save Server.MapPath("apple_small.jpg") '保存图片到磁盘
Jpeg.Close:Set Jpeg = Nothing
%>
9、如何用AspJpeg组件进行图片合并?
AspJpeg 1.3+ enables you to place images on top of each other via the method DrawImage. To use this method, you must create two instances of the AspJpeg objects and populate both of them with images via calls to Open (or OpenBinary). When calling Canvas.DrawImage, the 2nd instance of AspJpeg is passed as an argument to this method, along with the X and Y offsets (in pixels):
使用该方法,您必须创建两个AspJpeg实例对象
<%
Set Jpeg1 = Server.CreateObject("Persits.Jpeg")
Set Jpeg2 = Server.CreateObject("Persits.Jpeg")
Jpeg1.Open Server.MapPath("t.jpg")
Jpeg2.Open Server.MapPath("t1.jpg")
Jpeg1.Canvas.DrawImage 10, 10, Jpeg2 ' optional arguments omitted
jpeg1.save Server.mappath("tt.jpg")
%>
11、如何用AspJpeg组件创建安全码?
创建安全码原理上和创建水印差不多。
<%
function make_randomize(max_len,w_n) 'max_len 生成长度,w_n:0 可能包含字母,1:只为数字
randomize
for intcounter=1 to max_len
whatnext=int((1-0+1)*rnd+w_n)
if whatnext=0 then
upper=122
lower=97
else
upper=57
lower=48
end if
strnewpass=strnewpass & chr(int((upper-lower+1)*rnd)+lower)
next
make_randomize=strnewpass
end function
'生成安全码的图片。
random_num=make_randomize(4,1) ''生成4位数字的安全码
session("random_num")=random_num '为么调用session,没有session的安全码是完全没有意义的。呵呵 .
Set Jpeg = Server.CreateObject("Persits.Jpeg") '调用组件
Jpeg.Open Server.MapPath("t.jpg") '打开准备的图片
Jpeg.Canvas.Font.Color = &HFFFFFF
Jpeg.Canvas.Font.Family = "Arial Black"
Jpeg.Canvas.Font.Bold = false
Jpeg.Canvas.PrintText 0, -2, random_num
jpeg.save Server.MapPath("tt.jpg") '保存
%>
<img src="tt.jpg" border="0" align="absmiddle">
Output to Memory
<%
Set rs = Server.CreateObject("adodb.recordset")
rs.Open "images", strConnect, 1, 3
rs.AddNew
rs("image_blob").Value = Jpeg.Binary
rs.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"
Dim Jpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")
If Err.Number=-2147221005 then
Response.write "没有这个组件,请安装!"'检查是否安装AspJpeg组件
Response.End()
End If
Jpeg.Open (LocalFile)'打开图片
If err.number then
Response.write"打开图片失败,请检查路径!"
Response.End()
End if
Dim TempA '原始图片的二进制数据
Dim TempB '加了不透明文字水印的图片
Dim TempC '最终效果
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 = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = True
Jpeg.Canvas.Font.Quality = 5'输出质量
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-150,Jpeg.OriginalHeight/2,"www.Tsingfeng.com"'水印位置及文字
TempB=Jpeg.Binary'将文字水印处理后的值赋给TempB,这时,文字水印没有不透明度
'============调整文字透明度================
Set MyJpeg = Server.CreateObject("Persits.Jpeg")
MyJpeg.OpenBinary TempA
Set Logo = Server.CreateObject("Persits.Jpeg")
Logo.OpenBinary TempB
MyJpeg.DrawImage 0,0, Logo, 0.2'0.3是透明度
TempC=MyJpeg.Binary'将最终结果赋值给TempC,这时也可以生成目标图片了
response.BinaryWrite TempC'将二进输出给浏览器
MyJpeg.Save (TargetFile)
set TempA=nothing
set TempB=nothing
set TempC=nothing
Jpeg.close
MyJpeg.Close
Logo.Close
%>
-----------------------------------------------------------------------------------------------------
为图片加水印
Dim Jpeg,Jpeg1
'建立实例
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Set Jpeg1 = Server.CreateObject("Persits.Jpeg")
'打开要加水印的图片
Jpeg.Open Server.mappath(路径)
'透明图片水印图
Jpeg1.Open Server.mappath("../Images/sy.gif")
'合并图
Jpeg.Canvas.DrawImage 0,Jpeg.OriginalHeight/2-33,Jpeg1,0.6,&HFFFFFF
' 保存文件
Jpeg.Save Server.mappath(路径)
' 注销对象
Set Jpeg = Nothing
Set Jpeg1 = Nothing
加透明图片水印,实际上就是将两个图合并,最关键的就是这一句:
其中0.6是透明度,1是不透明,值越小,透明越大,0就什么也看不见了。&HFFFFFF这个参数是最关键的,这是透明图片水印图的背景色,这个参数必须与透明图片水印图的背景一样,不然的话就实现不了透明了。就是我们不想看到的那一部分色
从AspJpeg1.8 版本开始,AspJpeg 提供了比 PrintText 更为灵活的文本绘图方法PrintTextEx,PrintTextEx 使用FreeType?来源
程序库,可以在任何背景上呈现高品质的反锯齿文本。
<%
Dim objJpeg
Dim strText
Set objJpeg = Server.CreateObject("Persits.Jpeg")
objJpeg.Open Server.MapPath("t.jpg")
strText = "Copyright ? 2008 Abo BloG"
objJpeg.Canvas.Font.Size = 30
objJpeg.Canvas.Font.Color = &HFF0000 '十六进制颜色值
objJpeg.Canvas.Font.Opacity = 0.7 '不透明度,1为不透明
objJpeg.Canvas.PrintTextEx strText, objJpeg.Width/2, objJpeg.Height-20, objJpeg.WindowsDirectory & "\Fonts\Arial.ttf"
objJpeg.Save Server.MapPath("tt.jpg")
Set objJpeg = Nothing
%>
Text - 要打印的文字字符串(Unicode格式),如果含有CR/LR字符则多行显示。
X, Y - 打印位置,XY轴坐标。
FontPath - 指定字体文件的物理路径。只要知道字体路径即可,并不需要系统注册。
以下字体属性影响PrintTextEx:
-------------------------------------------------------------------------------------------------
Sub CreateView(Image1,Image2)
'//Image1原图(被处理图片)
'//Image2小图片(需要附加的小图标,最好是gif的透明图片)
'//Tmpimage预览图
'//ImageMode是否添加边框
upload_ViewType=0
LogoPath = Image2
Set Logobox = Server.CreateObject("Persits.Jpeg")
Logobox.Open LogoPath '//读取添加的图片。
Logobox.Width = 100 '//用做水印的图片的宽度值(像素)
Logobox.Height = 20 '//用做水印的图片的高度值(像素)
'//读取原图,并准备添加水印。
Set ogvbox = Server.CreateObject("Persits.Jpeg") '//读取要处理的原文件。
ogvbox.Open Trim(Image1)
Set midogvbox = Server.CreateObject("Persits.Jpeg")
midogvbox.Open Trim(Image1)
midogvbox.Width = 200
midogvbox.Height = (midogvbox.Originalheight/midogvbox.OriginalWidth)*200
imgname=mid(Image1,InStrRev(Image1,"\")+1)
imgpath=left(Image1,InStrRev(Image1,"\"))
midogvbox.Save imgpath&"mid"&imgname
set midogvbox=nothing
If ogvbox.OriginalWidth<Cint(ImageWidth) or ogvbox.Originalheight<Cint(ImageHeight) Then
F_Viewname=""
Set ogvbox = Nothing
Exit Sub
Else
ogvbox.Canvas.Pen.Color = &HFFff00'//增加水印后图片的边框色彩。
ogvbox.Canvas.Pen.Width = 1 '//增加水印后图片的边框宽度。
ogvbox.Canvas.Brush.Solid = False '//边框内是否填充颜色,你可以试试看值为True时的效果^o^
ogvbox.DrawImage ogvbox.width-105,ogvbox.height-25,Logobox,1,&HFFFFFF'//水印图片的起始坐标,我这里是放在图片的正中间。0.4是透明度,我这里是半透明,1表示不透明
'ogvbox.Canvas.Bar 0, 0, ogvbox.Width, ogvbox.Height '//水印可用的范围。我这里表示左上角至右下角,即整张图片的任意位置都可加水印。
ogvbox.Save Image1 '//根据以上参数生成增加水印后的图片文件
'ogvbox.Width = ogvbox.width
'ogvbox.height = ogvbox.height
'ogvbox.Sharpen 1, 120
'ogvbox.Save Server.MapPath(Tmpimage) '//生成增加水印后的图片的预览图片。
End If
Set ogvbox=Nothing
Set Logobox=Nothing
end sub
%>
<!-- -----------------q.asp-------------- -->
<%
'Call CreateView("photoname.jpg","2")
'CreateView(原图路径,文字/图像水印)
'----------------------------------
'创建预览图片及打水印:call CreateView(文件的路径,要添加的水印图片文件)
'Design by Seven (See7di@Gmail.com)(www.7di.net)
Sub CreateView(imagename,inttype)
Dim Object,objFont,img,Obj,LogoPath,sWidth,sHeight
img = "logo.jpg"'//LOGO文件
sWidth = "100"'//LOGO的宽
sHeight = "49"'//LOGO的高
LogoPath = Server.MapPath(img)'//LOGO路径
Set Obj = Server.CreateObject("Persits.Jpeg")'//建立LOGO对象
Set Object = Server.CreateObject("Persits.Jpeg")'//建立原图对象
'On Error resume Next
Obj.Open LogoPath'//读取LOGO
If err>0 Then
Response.Write ("对不起,获取LOGO图片文件失败!")
Response.End()
End if
Object.Open Trim(Server.MapPath(imagename))'//读取原图
If err>0 Then
Response.Write ("对不起,获取需要处理的图片文件失败!")
Response.End()
End if
Obj.Width = sWidth'//加入图片的原宽度
Obj.Height = sHeight'//加入图片的原高度
'\\如果原图比LOGO大
If Object.width>Cint(Obj.Width) and Object.Height>Cint(Obj.Height) Then
strDo="yes"
End if
If inttype=1 Then
Object.Canvas.Font.Color = &HFF0000'//文字的颜色
Object.Canvas.Font.Family = "Verdana"'//文字的字体
Object.Canvas.Font.Bold = True'//是否加粗
Object.Canvas.Print 10, 10, "www.sxjdypw.cn/"'//打印坐标x 打印坐标y 需要打印的字符
Object.Canvas.Pen.Color = &H000000'//背景颜色
Object.Canvas.Pen.Width = 1'//画笔宽度
Object.Canvas.Brush.Solid = False'//是否加粗处理
Object.Canvas.Bar 0, 0, Object.Width, Object.Height'//起始X坐标 起始Y坐标输入长度 输入高度
Else
If strDo="yes" Then
Object.Canvas.Pen.Color = &HFFFFFF'// 边框的颜色
Object.Canvas.Pen.Width = 1'// 边框的粗细
Object.Canvas.Brush.Solid = false'// 图片边框内是否填充颜色
'Object.DrawImage Object.Width/2, Object.Height/2, Obj, 0.7, &HFFFFFF,90 '// 加入图片的位置以及坐标,透明度(添加水印图片)
Object.DrawImage Object.Width - 125, Object.Height - 74, Obj, 1, &HFFFFFF,50
Object.Canvas.Bar 0, 0, Object.Width, Object.Height'// 图片边框线的位置坐标
Object.Width = Object.Width
Object.height = Object.height
End if
End If
Object.Save Server.MapPath(imagename)'// 生成文件
Set Obj=Nothing
End Sub
%>
