从WindsPhoto中分离出水印的部分,单独做了这个插件,给有需要的朋友。
插件简介
- 给图片添加水印,支持文字水印与图片水印
- 仅对UEditor图片按钮上传的JPG格式图片有效
- 需要服务器安装aspjpeg组件,aspjpeg 1.8 以上图片水印支持png格式透明
更新日志
2013年3月23日更新:修正无aspjpeg组件设置界面报错,修正与WindsPhoto贴图相册冲突。
2013年7月3日更新:新增图片宽度限制,挂上网站设置菜单。
从WindsPhoto中分离出水印的部分,单独做了这个插件,给有需要的朋友。
2013年3月23日更新:修正无aspjpeg组件设置界面报错,修正与WindsPhoto贴图相册冲突。
2013年7月3日更新:新增图片宽度限制,挂上网站设置菜单。
今天装了一个asp的bbs,很经典的BBSXP程序,最后一次玩还是高三的时候,如今大学都毕业了….
看了附件上传部分的代码,比我的WindsPhoto处理图片水印强很多,精华代码在这个函数,很有参考价值,贴出来学习一下。
Function JpegPersits if SiteConfig("WatermarkType")=0 then Jpeg.Canvas.Font.Color = Replace(SiteConfig("WatermarkFontColor"),"#","&h") '颜色 Jpeg.Canvas.Font.Family = SiteConfig("WatermarkFontFamily") '字体 Jpeg.Canvas.Font.size = SiteConfig("WatermarkFontSize") '大小 Jpeg.Canvas.Font.Bold = CBool(SiteConfig("WatermarkFontIsBold")) '是否加粗 'Jpeg.Canvas.Font.ShadowXoffset = 10 '水印文字阴影向右偏移的像素值,输入负值则向左偏移 'Jpeg.Canvas.Font.ShadowYoffset = 10 '水印文字阴影向下偏移的像素值,输入负值则向右偏移 Title = SiteConfig("WatermarkText") TitleWidth = Jpeg.Canvas.GetTextExtent(Title) if Jpeg.Width<TitleWidth then exit function '图片比水印文字小,则不加水印 select case SiteConfig("WatermarkWidthPosition") case "left" PositionWidth=10 case "center" PositionWidth=(Jpeg.Width - TitleWidth) / 2 case "right" PositionWidth= Jpeg.Width - TitleWidth - 10 end select Jpeg.Canvas.Print PositionWidth, 10, Title ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' elseif SiteConfig("WatermarkType")=1 then Set Jpeg2 = Server.CreateObject("Persits.Jpeg") Jpeg2.Open Server.MapPath(SiteConfig("WatermarkImage")) Jpeg2Width=Jpeg2.OriginalWidth Jpeg2Height=Jpeg2.OriginalHeight if Jpeg.Width<Jpeg2Width or Jpeg.Height<Jpeg2Height*2 then exit function '图片比水印图片小,则不加水印 select case SiteConfig("WatermarkWidthPosition") case "left" PositionWidth=10 case "center" PositionWidth=(Jpeg.Width - Jpeg2Width) / 2 case "right" PositionWidth= Jpeg.Width - Jpeg2Width - 10 end select select case SiteConfig("WatermarkHeightPosition") case "top" PositionHeight=10 case "center" PositionHeight=(Jpeg.Height - Jpeg2Height) / 2 case "bottom" PositionHeight= Jpeg.Height - Jpeg2Height - 10 end select Jpeg.Canvas.DrawImage PositionWidth, PositionHeight, Jpeg2, 1, &HFFFFFF '透明度, 透明颜色 end if End Function %>
AspJpeg作为图片处理的服务器组件应用非常广泛,在WindsPhoto相册中关于aspjpeg的应用有很多,缩略图、文字水印、图片水印都有用到。
为了兼容空间不支持aspjpeg的用户,加入了aspjpeg的检测,包括是否存在以及权限的检测。
Set Jpeg = Server.CreateObject("Persits.Jpeg") 'Response.Write Jpeg.Expires if -2147221005=Err or Jpeg.Expires<now() then .............. end if Set Jpeg = nothing
-2147221005=Err 这句是检测组件是否存在,这样是不够的,即使存在的aspjpeg主机也可能没有注册组件,也就是没有权限。
Response.Write Jpeg.Expires 可以查看出主机到期的时间,用Jpeg.Expires和当前时间对比,如果小于当前时间就说明没有权限。也就是 or 后面那句 Jpeg.Expires<now() 。
近期评论