(function($) { $.fn.extend({ resizeimg: function(opt, callback) { var defaults = { w: 200, h: 150 }, opts = $.extend(defaults, opt); //获取图片实际宽高,此方法摘自网络 var getimgwh = function(url, callback) { var width, height, intervalid, check, div, img = new image(), body = document.body; img.src = url; //从缓存中读取 if (img.complete) { return callback(img.width, img.height); }; //通过占位提前获取图片头部数据 if (body) { div = document.createelement('div'); div.style.csstext = 'visibility:hidden;position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden'; div.appendchild(img) body.appendchild(div); width = img.offsetwidth; height = img.offsetheight; check = function() { if (img.offsetwidth !== width || img.offsetheight !== height) { clearinterval(intervalid); callback(img.offsetwidth, img.clientheight); img.onload = null; div.innerhtml = ''; div.parentnode.removechild(div); }; }; intervalid = setinterval(check, 150); }; // 加载完毕后方式获取 img.onload = function() { callback(img.width, img.height); img.onload = img.onerror = null; clearinterval(intervalid); body && img.parentnode.removechild(img); }; }; this.each(function() { var _this = this; getimgwh(this.src, function(imgwidth, imgheight) { //计算图片最大宽度 if (imgwidth > opts["w"]) { _this.width = opts["w"]; _this.height = imgheight * (opts["w"] / imgwidth); imgwidth = opts["w"]; imgheight = _this.height; } //计算图片最大高度 if (imgheight > opts["h"]) { _this.height = opts["h"]; _this.width = imgwidth * (opts["h"] / imgheight); imgheight = opts["h"]; imgwidth = _this.width; } //水平居中,垂直居中 // $(_this).css({ // "margin-top": (opts["h"] - imgheight) / 2, // "margin-left": (opts["w"] - imgwidth) / 2 // }); }); }); } }); })(jquery);