JPG图片优化测试_JS脚本
2011-04-21 11:59 rocdu 阅读(327) 评论(0) 编辑 收藏 举报前端代码开发完成后,编辑会拿去填内容,其中图片元素是内容组成的重要一部分。
通常前端UI合图使用GIF或PNG格式,内容图片则与JPG文件为主。
前端优化中重要一项是控制文件SIZE,要求手写代码、简洁高效、去冗余、装饰图都埋在CSS里。
挂一个jQuery(jquery-1.5.2.min.js),大小在85KB以内。有些公司更吝啬字节,封装小量的基类使脚本相对更轻巧。
但一张没有优化过的内容图片SIZE超过100KB是常有的事,对用户体验及服务流量带来不小的损失。
用一个脚本来提醒编辑那些内容图片应该注意优化,这正是本文的目地。
环境要求:
由于使用了fileSize属性,脚本运行环境为IE浏览器。
IE6、7(不是IETester),可把脚本抽脂压榨为一行后在WEB页面加载完成后,于地址栏输入执行即可。
IE8下脚本在地址栏下输入执行已被禁止,在WEB页面加载完成后可按F12呼出‘开发人员工具’在脚本控制台中粘贴脚本运行即可。
运行脚本后,脚本会排查JPG图片,如有超标嫌疑会加5像素的黄色边框已示警告,鼠标悬浮此图上已TITLE的形式报告此图的当前大小SIZE和优化后理想的大小SIZE数据。
/** * @author rocdu * @desc JPG图片优化测试 */ ;(function(){ var jpgTest = function(_data){ this.data = _data; this.init(); }; jpgTest.prototype = { /** * 测试目标 */ aim: function(){ var img = document.getElementsByTagName('img'), imgLen = img.length; for(var i = 0; i < imgLen; i++){ if(img[i].fileSize < (this.data.excluded * 1024) || // 图片不在优化范围内 !img[i].src.match(/\.jpe?g$/i) || // 图片不是JPG文件 img[i].offsetWidth == 0 // 图片没有width属性值 ){continue;}; this.disposal(img[i], Math.floor(img[i].fileSize * .001024)); }; }, /** * 测试结果处理 * @param {obj} _img * @param {int} _imgFact */ disposal: function(_img, _imgFact){ var imgW = _img.offsetWidth, imgH = _img.offsetHeight, imgIdeal = Math.floor(imgW * imgH * this.data.optimization * .001024); // 计算期望值 if(_imgFact > imgIdeal){ // 展示测试结果 _img.style.border = '5px yellow solid'; _img.title = '[实际大小:(' + _imgFact + 'KB)];[期望大小:(' + imgIdeal + 'KB)]'; }; }, /** * 隐藏修复 */ hiddenFix: function(){ var that = this; document.onmousemove = function(){ that.aim(); }; }, /** * 初始化 */ init: function(){ this.aim(); this.hiddenFix(); } }; var myJpgTest = new jpgTest({ optimization: .45, // 优化比(通常比值在45%或60%) excluded: 3 // 小于此值的,即排除范围(以KB为单位) }) })();