存档
在我的文章Workeasy之不变形批量转换图片文件大小中,谈到可以改变JPG文件大小,用到的ASPJPEG没有中文文档,我在网上找了一篇,例子和英文文档一样,应该是翻译的,复制下来供以后参考。留作以后参考:
aspjpeg是一款非常强大的图片处理组件,纯英文版本。不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印。可能是因为纯英文的缘故。这里我就是针对这些问题谈谈aspjpeg的高级用法。这里的技术主要包括:
aspjpeg唯一点不足的就是输出方式比较单一。在这里,我们主要谈将图片处理保存后再调用的这种输出方法。另外,本人比较懒,所以有些代码仍然引用于原文档,不懂的地方偶会加以解释!
学过vb或者.net的同志肯定一看就明白了。刷子来着。呵呵。
一、图片缩略
四、图片切割
一直以来,对aspjpeg不了解的人以为是无法用它来进行切割的。
其实有这样的一个方法的
crop x1,y1,x2,y2
切割长方型左上角x坐标,y坐标 右下角x坐标 y坐标
下面我就做一个演示哈
Set Jpeg = Server.CreateObject(“Persits.Jpeg”)
jpeg.open server.MapPath(“/pic/1.gif”)
jpeg.width=70
Jpeg.Height = Jpeg.OriginalHeight*70 / jpeg.Originawidth
jpeg.crop 0,0,70,52 开始切割其实是把超过52象素的下部分去掉
jpeg.save server.MapPath(“/temp_pic/small_1.gif”) 保存
怎么样,很简单吧
五、图片合并
我们这里是要把logo图片加到dodge_viper.jpg图片上去
其实,图片合并的方法也可以用来动态打水印哦
Set Photo = Server.CreateObject(“Persits.Jpeg”)
PhotoPath = Server.MapPath(“images”) & “\dodge_viper.jpg”
Photo.Open PhotoPath
Set Logo = Server.CreateObject(“Persits.Jpeg”)
LogoPath = Server.MapPath(“images”) & “\clock.jpg”
Logo.Open LogoPath
Logo.Width = 70
Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth
Photo.DrawImage 0, 0, Logo
Photo.SendBinary 这里用了sendBinary的输出方法。当然,你也可以先保存更改后的dodge_viper.jpg,再输入也可以。我个人不大喜欢用sendBinary方法,在网速慢的时候容易出错。在速度方面也不怎样。呵呵。
六、数据库支持
这里不多说了。其实就是Binary方法,大家知道图片存进数据库只能存为二进制的文件的。所以代码就懒的写了。
七、更多方法介绍
Canvas.Line(Left, Top, Right, Bottom)
画一条直线
Canvas.Ellipse(Left, Top, Right, Bottom)
画出一个椭圆
Canvas.Circle(X, Y, Radius)
画出一个圆
Canvas.Bar(Left, Top, Right, Bottom)
画出一个长方形,上面有代码介绍了
Canvas.Font.ShadowColor
文字阴影颜色
Canvas.Font.ShadowXOffset [...]
随着业务量的增多,客户信息管理又是一个问题,而且客户的资料、画册已经堆积如山了,找一个客户的资料太难了,于是我想到了给客户信息编号,如9月21日跑来的就是9.21-1,9.21-2,把客户在本站的文件名,密码都记录下来。。。噩梦又出现了,今天客户改这,明天改那,记事本已将化的不成样子了
为何不用简单的网站来管理呢?在网上找OA系统?这个太大材小用了吧~因为自己本身就是程序员,还是自己写个吧~
下载地址:http://www.miaoqiyuan.cn/products/sitemanger.rar
通过本程序,可以方便的列出需要拍照的,需要传图的,没有简介的,需要客户确认的,已经完成的单子的信息~
大大的放百年了我们的管理,值得一提的(我最自豪的)是直接点击公司名称即可选中(边框为蓝色),再点取消,通过点击上边的“修改为..”可以批量修改选中的Case的状态(隐藏了checkbox,点击设checkbox设为Ture),不是通过ID来修改,项目可以为任意多,而且可以通过全选,反选来快速选择。
运用了CSS+Javascript+ASP(VBScript),在workeasy系类中我最喜欢的一个工具。
通过WorkEasy之上传图片预览工具,Workeasy之图片文件统计打印大大的提高了我们的工作效率,是上传图片成为了一个轻松的问题,因为用的图片不得不做一下处理,用的图片大小甚至是200×900像素,服务器程序用ASPJPEG生成120×120的缩略图,因为为了快捷,所以直接穿了上去不,不变形才怪~~
然后是客户提出种种意见,然后我们开始了无休无止的修改图片为统一的大小,长宽比为1:1,用WorkEasy之上传图片预览工具列出图片,本来30张图二十多分钟就传完了,但是修改30张图甚至用到两个小时~对于我这种懒人简直是一个要命的问题,曾今想过N多次不干了,但是又N+1次回到了工作岗位~
十一长假,别人都放了一个星期,而我们仅仅2天~555555,压得活太多了~
昨天没事看了看ASPJPEG的文档,E文的,因为在回老家了,没有时间上网,简直是…,好在我对VBScript用的还是比较熟练(在自己博客上就不谦虚了),在家上有效果图,这样就大体明白了ASPJPEG的用法,然后写出了这个小工具!
Workeasy之不变行批量转换图片文件大小,嘎嘎,简直太棒了,能自动修改图片大小,而且不变形,代码很简单,我在老家写的,先吧主要代码写在纸上,会来马上放到了博客,呵呵,明天工作,狂轻松了,。。,。
用了ASPJPEG,大体思路如下:
1.遍历程序所在文件夹(也可单独设置),并打开JPG文件
2.获取JPG文件长宽,并判断宽高
3.如果宽>=高,现宽=400,现高=400*JPEG图片的宽/JPEG图片的高;TMP=(400-现高)/2,然后用ASPJPEG的Crop 0,-TMP,400,现高+TMP,这样图片上下就有一个上下一样大小的空白,这样就是一个400×400的图片了,怎么改变大小都不会变形了;同理,设高400,然后在图片两边加一个同样大小的空白。
4.保存文件
这样就全自动修改了图片的大小,而且不会变性,2个小时的工作只需1秒~嘎嘎,爽呆呆咯~_~
代码如下,需要安装ASPJPEG,否则不会正常运行。
<html>
<head>
<script type="text/vbscript">
Function Mappath(v)
Mappath=fso.getAbsolutePathName(v)
End Function
Sub Convert
for each file in fpo.files
if ucase(fso.getExtensionName(file))="JPG" Then
jpeg.open file
owidth=jpeg.originalwidth
oheight=jpeg.originalheight
if owidth>=oheight then
jpeg.width=400
jpeg.height=400*oheight/owidth
om=(400-jpeg.height)/2
jpeg.crop 0,0-om,400,jpeg.height+om
else
jpeg.width=400*owidth/oheight
jpeg.height=400
om=(400-jpeg.width)/2
jpeg.crop 0-om,0,jpeg.width+om,400
end if
jpeg.save file
jpeg.close
end if
next
msgbox "转换完毕。"
window.close
End Sub
set fso=CreateObject("Scripting.FileSystemObject")
set jpeg=CreateObject("Persits.JPEG")
set fpo=fso.getFolder(Mappath(""))
</script>
</head>
<body style="background:#D4D0C8;text-align:center" onload="Convert">
<div style="width:640px;height:400px;margin-top:50px;border:solid 2px #666;background:#FFF;font-size:48px;font-weight:800;font-family:黑体;line-height:400px;">
请稍后…
</div>
</body>
</html>
通过WorkEasy之上传图片预览工具, 大大的提高了工作效率~
但是新的问题又出现,因为图片信息不全,我们网络部(OnlyMe)和编辑(OnlyOne)部的员工对客户的产品信息不是很了解~,这样就出现了一个新的问题,编号网网需要是某公司的编号,但是我们这边没有相关信息,客户天天到公司也不现实,怎么办呢?如果把所有图片打印出来,给客户看不久解决了吗?本来想用WorkEasy之上传图片预览工具,这样太费纸张了,于是在WorkEasy之上传图片预览工具的基础上修给,于是出现了本篇文章:Workeasy之图片文件统计打印
打印120多张图片只需要,在下面预留了名称,分类供客户填写,代码如下:
<html><head><title>点石传媒传图预览工具 – Design By MiaoQiyuan.cn cnly888.com</title></head><body style="font-size:14px;"><table><tr><td colspan=8 style="text-align:center;background:#CCC;border:solid 2px #666;padding:5px;font-family:黑体;font-size:28px;font-weight:800">点石传媒 客户产品 统计表</td></tr><tr>
<script type="text/vbscript">
j=10000 //产品编号设置,需要1开头
co="" //公司名称
eco="" //编号开头
fi=0 //产品名称,0:空;1:目录名;2:文件名
set fso=createobject("scripting.filesystemobject"):fpa=fso.getabsolutepathname("./"):set fpo=fso.getfolder(fpa):for each xx in fpo.files
if Lcase(fso.GetExtensionName(xx))="jpg" then
if i mod 8=0 then document.write "</script></tr><tr>"
if fi=1 then
fpn=fpo.name
elseif fi=2 then
fpn=replace(xx.name,"."&fso.GetExtensionName(xx),"")+" "
else
fpn=""
end if
i=i+1:document.write "<td><table height=140 width=110 bgcolor=#666666 onclick=""javascript:this.style.background=’#000′;"" ondblclick=""javascript:this.style.background=’#666′;""><tr><td bgcolor=#FFFFFF><img src="&xx.name&" width=100 height=100/></td></tr><tr><td bgcolor=#CCCCCC>名称:</td></tr><tr><td bgcolor=#CCCCCC>分类:</td></tr></table></td>"
end if:next
</tr><tr><td colspan=8 [...]
最近比较忙,没有更新博客。
因为现在公司网站程序已经完成,所以我更多的时间是上传图片,因为本人实在太懒了,天天传图,而且容易重复上传,郁闷。。。忽然想起了HTA文件~嘎嘎,于是出现了WorkEasy系列文章。。
这是第一篇文章,可以设置文件名的前缀,自动为产品编号,可以选择按文件夹名或按文件名显示产品名称,通过这个工具就可以直接复制粘贴。工作好不快乐。。。。。。。。