求个用Javascript把页面内所有图片全部压缩的代码,注意不是用CSS改width 本帖最后由 shendaowu 于 2014-11-16 00:00:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得可以实现!用rgbaster.js 获取图片像素颜色! 然后就是你自己写算法了! 比如获得了a点颜色 然后获取a点周围8个点颜色 然后用你自己的算法压缩成一个点! 算法你可以看数字图像处理的一些常用算法! rgbaster.js 我也没用过 所以具体怎么写 我不清楚! 就是给你提供一个思路! 你这个好像比用canvas的方法复杂多了啊。今天又看了一下Mozilla网站上的那个,感觉好像能理解了。不知道是不是昨天半夜太困了影响理解能力了。 rgbaster.js 就是利用canvas获取颜色! js是客户端的。。图片都下载下来了就算js能压缩有什么意思?而且js应该也不能压缩。。要压缩要用服务器端的语言,生成图片的时候多生成几个尺寸的,或者压缩下图片的像素什么的 我草,累死我了。卡在同源策略上一两个小时。最后终于发现这个玩意是可以关掉的了。写代码的时候发现toDataURL没法导出,然后发现网站上的图片和网站不在一个域名里。好像网站的服务器必须设置Access-Control-Allow-Origin才能导出。幸亏只是我自己用,不然这基本就无解了。http://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome#chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security不过这个模式好像是有危险的。开贴问一下会有什么危险吧。已经基本上成功了,之后都是一些修饰性的东西了。代码写得很烂。$("body").append("<canvas id='img_resizer'></canvas>");var canvas = document.getElementById("img_resizer");var ctx = canvas.getContext("2d");var img_cur = $("img")[0];img_cur.crossOrigin = "anonymous";var img_cur = $("img")[0];var MAX_WIDTH = 200;var MAX_HEIGHT = 200;var width = img_cur.width;var height = img_cur.height; if (width > height) { if (width > MAX_WIDTH) { height *= MAX_WIDTH / width; width = MAX_WIDTH; }} else { if (height > MAX_HEIGHT) { width *= MAX_HEIGHT / height; height = MAX_HEIGHT; }}canvas.width = width;canvas.height = height;ctx.drawImage(img_cur, 0, 0, width, height);//ctx.fillStyle = "green";//ctx.fillRect(10, 10, 100, 100);var dataURL = canvas.toDataURL();//console.log(dataURL);$("img:first").attr("src",dataURL) 一个简单方法求解释 老大们帮帮忙!! 一个关于DIV动态生成的奇怪问题,高手请进,小弟虚心求教~~,在线等 如何取外层元素? 紧急咨询:外部js文件导入的问题。 Javascript在FireFox下出现的古怪问题,同一函数多次返回的值多不相同 简单的一个问题.... 一个关于控制<OBJECT>标签元素的问题! 如何用innerText属性往表格里写格式化过的文字啊 我只能加一般的文字啊! window.showModalDialog JS中如何分未定义变量和已定义未赋值变量? 调用jquery的remove问题
用rgbaster.js 获取图片像素颜色! 然后就是你自己写算法了! 比如获得了a点颜色 然后获取a点周围8个点颜色 然后用你自己的算法压缩成一个点! 算法你可以看数字图像处理的一些常用算法! rgbaster.js 我也没用过 所以具体怎么写 我不清楚! 就是给你提供一个思路!
写代码的时候发现toDataURL没法导出,然后发现网站上的图片和网站不在一个域名里。好像网站的服务器必须设置Access-Control-Allow-Origin才能导出。幸亏只是我自己用,不然这基本就无解了。
http://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome#
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
不过这个模式好像是有危险的。开贴问一下会有什么危险吧。已经基本上成功了,之后都是一些修饰性的东西了。
代码写得很烂。$("body").append("<canvas id='img_resizer'></canvas>");
var canvas = document.getElementById("img_resizer");
var ctx = canvas.getContext("2d");
var img_cur = $("img")[0];
img_cur.crossOrigin = "anonymous";
var img_cur = $("img")[0];var MAX_WIDTH = 200;
var MAX_HEIGHT = 200;
var width = img_cur.width;
var height = img_cur.height;
if (width > height) {
if (width > MAX_WIDTH) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
} else {
if (height > MAX_HEIGHT) {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
}
canvas.width = width;
canvas.height = height;ctx.drawImage(img_cur, 0, 0, width, height);
//ctx.fillStyle = "green";
//ctx.fillRect(10, 10, 100, 100);var dataURL = canvas.toDataURL();
//console.log(dataURL);
$("img:first").attr("src",dataURL)