标题: [原]WIA转换图片格式JScript版及mshta单行命令版
[打印本页]
作者: electronixtar
时间: 2007-2-28 15:29
标题: [原]WIA转换图片格式JScript版及mshta单行命令版
在
这个帖子里 朋友们提到了需要一个命令版本的图片转换工具,于是研究了下写出来和大家分享。mshta可以直接用命令行参数插入WSH/VBS/JS代码,所以先发一个Javascript原型:
//原始文件的WIA对象
var WiaFile=new ActiveXObject('WIA.ImageFile');
//载入原始图片
WiaFile.LoadFile('Bliss.bmp');
//WIA图片处理对象
var WiaProcess=new ActiveXObject('WIA.ImageProcess');
//这里的CLSID表示添加了一个转换图片格式的filter
WiaProcess.Filters.Add('{42A6E907-1D2F-4b38-AC50-31ADBE2AB3C2}');
//WIA filter属性对象
var WiaFilterProperties=WiaProcess.Filters(1).Properties
// 这里的CLSID表示转换成的图片格式
WiaFilterProperties('FormatID').Value='{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';
//转换质量,最好为100,几乎没有变化,但是文件体积比较大
WiaFilterProperties('Quality').Value=5;
//保存为另一个WIA对象
var WiaFile2 =WiaProcess.Apply(WiaFile);
//保存成文件
WiaFile2.SaveFile('BlissCompressed2.jpg');
那么写成mshta版就是:
mshta "javascript:var i=new ActiveXObject('WIA.ImageFile');i.LoadFile('Bliss.bmp');var x=new ActiveXObject('WIA.ImageProcess');x.Filters.Add('{42A6E907-1D2F-4b38-AC50-31ADBE2AB3C2}');with(x.Filters(1)){Properties('FormatID').Value='{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';Properties('Quality').Value=5;}x.Apply(i).SaveFile('BlissCompressed2.jpg');window.close();"
使用时请代码中的 bliss.bmp 改成目标图片文件名称,BlissCompressed2.jpg改成保存为的文件名。代码中表示转换为的格式的CLSID:
BMP {B96B3CAB-0728-11D3-9D7B-0000F81EF32E}
PNG {B96B3CAF-0728-11D3-9D7B-0000F81EF32E}
GIF {B96B3CB0-0728-11D3-9D7B-0000F81EF32E}
JPEG {B96B3CAE-0728-11D3-9D7B-0000F81EF32E}
TIFF {B96B3CB1-0728-11D3-9D7B-0000F81EF32E}
可能需要WIA运行库:
http://download.microsoft.com/download/WinXPHome/Utility/2.0/WXP/EN-US/WIAAutSDK.zip
用 regsvr32 wiaaut.dll 注册该组件
[
Last edited by electronixtar on 2007-3-1 at 09:30 AM ]
作者: everest79
时间: 2007-2-28 20:32
谢谢老大,这会睡觉,晚上试
作者: HUNRYBECKY
时间: 2007-3-1 00:39
electronixtar兄弟越来越牛了。
作者: vkill
时间: 2007-3-1 01:45
2003好象不可以
作者: everest79
时间: 2007-3-3 06:18
一切顺利,唯一有疑问的是有些机器上有,有些机器上没有,而我都是用同一张安装光盘装了的
作者: chishingchan
时间: 2008-3-19 13:11
可以转换,不过转换后的质量跟不上原BMP图,请问有提高质量的参数吗?
作者: yuan6319
时间: 2010-3-3 17:35
把图片质量那个5改成100看看