28,391
社区成员
发帖
与我相关
我的任务
分享
function zipImage(src, w, h) {
// 启动 IE9 模式
var doc = new ActiveXObject("htmlfile");
doc.write("<meta http-equiv='X-UA-Compatible' content='IE=9' />");
// 加载图片
var img = doc.createElement("img");
img.src = "C:\\Users\\Rimifon\\Desktop\\" + src;
img.setAttribute("crossOrigin", "anonymous");
// 创建画布
var cvs = doc.createElement("canvas");
cvs.width = w; cvs.height = h;
var ctx = cvs.getContext("2d");
// 将图片压缩绘制到指定大小
ctx.drawImage(img, 0, 0, w, h);
var str = cvs.toDataURL("image/png").slice(22);
// base64 转 二进制存储
var xml = doc.createElement("xml");
xml.loadXML("<x/>");
var root = xml.documentElement;
root.dataType = "bin.base64";
root.text = str;
var bin = root.nodeTypedValue;
var stm = new ActiveXObject("Adodb.Stream");
stm.type = 1; stm.open();
stm.write(root.nodeTypedValue);
stm.saveToFile("03.png", 2); stm.close();
return str;
}
WSH.Echo(zipImage("02.jpg", 400, 225));
if(img.complete) return img;
// ASP 模式下有可能需要异步等待图像加载完成
var xhr = new ActiveXObject("MsXml2.ServerXmlHttp");
while(!img.complete) {
xhr.open("HEAD", "http://localhost/web.config", true);
xhr.send(); xhr.waitForResponse();
}
return img;
各位有更好的方法欢迎指导 <job><script language="javascript">
WSH.Echo(scaleImage("home.jpg", 200, 200));
function scaleImage(src, w, h) {
var gd = new GD;
var bin = gd.scaleImage(src, w, h);
gd.save(bin, "home.scaled.png");
return bin;
}
function GD() {
this.newImg = function(src) {
stm.type = 1; stm.open();
stm.loadFromFile(src);
var bin = stm.read();
stm.close();
root.nodeTypedValue = bin;
var img = doc.createElement("img");
img.src = "data:image/jpeg;base64," + root.text;
img.crossOrigin = "anonymous";
return img;
};
this.scaleImage = function(src, w, h) {
cvs.width = w; cvs.height = h;
var img = this.newImg(src);
var ss = img.width / img.height, ts = w / h;
// 对比原宽高比和现在的宽高比,前者大于后者,基于高度裁剪,否则基于宽度裁剪
var scale = ss > ts ? img.height / h : img.width / w; // 缩放比
var sx = (img.width - w * scale) / 2;
var sy = (img.height - h * scale) / 2;
ctx.drawImage(img, sx, sy, w * scale, h * scale, 0, 0, w, h);
root.text = cvs.toDataURL("image/png").slice(22);
return root.nodeTypedValue;
};
this.save = function(bin, path) {
stm.open();
stm.write(bin);
stm.saveToFile(path, 2);
stm.close();
};
var doc = new ActiveXObject("htmlfile");
var stm = new ActiveXObject("Adodb.Stream");
var xml = doc.createElement("xml");
xml.loadXML("<x/>");
var root = xml.documentElement;
root.dataType = "bin.base64";
// 启动 IE9+ 模式
doc.write("<meta http-equiv='X-UA-Compatible' content='IE=edge' />");
// 创建画布
var cvs = doc.createElement("canvas");
var ctx = cvs.getContext("2d");
}
</script></job>