目的地指南:

ASP加图片水印代码

日期:2009-8-9 22:28:29 作者: 出处:

<%
'利用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连接中出现: 下一篇:《小故事大哲理》读后感

在线评论
姓名:
电话:
出发人数:
出发日期:
出游线路:
电子邮件:
通讯地址:
其它要求:
验证码:
关于我们 | 广告服务 | 联系我们 | 招聘信息 | 公司地址 | 汇款帐号 | 网站律师 | 网站地图 | 更多友情链接 | 
技术支持:爱威海旅游网 版权所有:威海微网信息技术服务有限公司 备案号: 鲁ICP备15008125号-3 爱威海旅游网热线:15666315157  www.awhly.com 威海旅游网