Workeasy不变形批量转换图片大小

网络整理 - 09-04
Workeasy上传图片预览工具使上传图片成为了一个轻松的问题,但是直接生成缩略图后图片会变形。昨天没事看了看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:bold;font-family:黑体;line-height:400px;">请稍后……</div>
</body>
</html>