<%
'利用AspJpeg组件给上传图片自动加水印,在使用该组件前请测试你的服务器是否支持。
'在你的上传文件(如:upfilea)中加入以下代码:
'程序代码
Dim Jpeg'' 水印部分代码开始
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.Open Server.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.Print 180, 420, "Lounger.cn" '定义水印文字
Jpeg.Save Server.MapPath(FileName) '保存文件,根据实际情况更改
Set Jpeg = align="absmiddle">
12、如何让AspJpeg组件支援数据库?
图片存进数据库只能以二进制数据保存,这里即利用AspJpeg的Binary方法,下面以两个AspJpeg用户手册上的代码为例,具体请参考AspJpeg用户手册:
Opening Images from Memory
<% ' Using ADO,../db/aspjpeg.mdb")
Set rs = Server.CreateObject("adodb.recordset")
SQL = "select image_blob from images2 where & Request("id")
rs.Open SQL, strConnect, 1, 3
Set Jpeg = Server.CreateObject("Persits.Jpeg")
'
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
%>
-----------------------------------------------------------------------------------------------------
AspJpeg组件给图片加透明图片水印
为图片加水印
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
加透明图片水印,实际上就是将两个图合并,最关键的就是这一句:
Jpeg.Canvas.DrawImage Jpeg.OriginalWidth/2-22,Jpeg.OriginalHeight/2-33,Jpeg1,0.6,&HFFFFFF
其中0.6是透明度,1是不透明,值越小,透明越大,0就什么也看不见了。&HFFFFFF这个参数是最关键的,这是透明图片水印图的背景色,这个参数必须与透明图片水印图的背景一样,不然的话就实现不了透明了。就是我们不想看到的那一部分色
------------------------------------------------------------------------------------------
AspJpeg1.8 版本之前未提供 PrintTextEx 方法,实现文字透明水印是相当麻烦的,基本思路是这样的:
AspJpeg 支持透明图片水印 DrawImage,所以采用图片水印来间接实现文字透明水印。
1.读取原始图片内容赋于A
2.将加入文字水印的图片内容赋于B
3.将B作为水印图片附加在A上,调整透明度并输出。
从AspJpeg1.8 版本开始,AspJpeg 提供了比 PrintText 更为灵活的文本绘图方法PrintTextEx,PrintTextEx 使用FreeType?开源
程序库,可以在任何背景上呈现高品质的反锯齿文本。
这是一个ASP版本的利用PrintTextEx方法产生文字透明水印简单示例程序:
<%
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
%>
PrintTextEx 方法参考:
Function PrintTextEx(Text As String, X As Long, Y As Long, FontPath As String) As Long
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完全不透明
-------------------------------------------------------------------------------------------------
<%
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
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
%>
引文来源 ASP加图片水印 - 韩显川 - 博客园
belowfrom:http://blog.sina.com.cn/s/blog_50e9573d0100codb.html
<!-- -----------------q-------------- -->
<%
'Call CreateView("photoname.jpg","2")
'CreateView(原图路径,文字/图象水印)
'----------------------------------
'创建预览图片及打水印:call CreateView(文件的路径,要添加的水印图片文件)
'Design by Seven (See7di@Gmail.com)(www.7di.net)
Sub CreateView(imagename,inttype)
Dim
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, 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
%>
上一篇: SQL连接中出现: 下一篇:《小故事大哲理》读后感