现在的位置: 首页 > 综合 > 正文

js 动态获取图片的宽度和高度像素值

2017年08月10日 ⁄ 综合 ⁄ 共 1238字 ⁄ 字号 评论关闭

一、背景
1、后台数据表在设计的时候,对于每张图片,没有记录其宽度和高度的像素值。
2、图片的宽度和高度有不同的size,比如,A类型的图片是700*500像素,B类型的图片是700*1000像素
3、在前台有一块700*500像素的固定大小的图片展示区,用于展示各种size的图片
4、A类型的图片正常展示,B类型的图限高展示,即展示成350*500像素
5、无法通过其他字段区分A类型图片和B类型图片(如果在设计数据表的时候记录了图片的宽度和高度该多好……)

二、解决办法
需要在前台用js根据图片的宽度和高度的像素值,来判断图片是A类型的还是B类型的。
考虑用ajax异步加载,当图片加载成功后,计算宽度和高度的像素值,然后在HTML的img标签中设置图片的width和height属性。

代码如下:

/** 动态获取图片的宽度和高度的像素值
 *
 * @param sUrl 图片的url
 * @param fCallback 回调函数,fCallback至少有一个类型为object类型的参数用来接收图片的宽、高、url
 * 
 * usage:
 * var url = "http://mat1.gtimg.com/datalib_img//11-05-26/c/c21ff1138e7349859b49b99312d05baf.jpg";
 * FGetImg(url, function(img){alert('width:'+img.width+";height:"+img.height+";url:"+img.url);});
 *
 */
var FGetImg = function(sUrl, fCallback)
{	
	var img = new Image();
	img.src = sUrl + '?t=' + Math.random();    //IE下,ajax会缓存,导致onreadystatechange函数没有被触发,所以需要加一个随机数
	if (FBrowser.isIE)
	{
		img.onreadystatechange = function()
		{
			if (this.readyState=="loaded" || this.readyState=="complete")
			{
				fCallback({width:img.width, height:img.height, url:sUrl});
			}
		};
	}else if (FBrowser.isFirefox || FBrowser.isSafari || FBrowser.isOpera || FBrowser.isChrome)
	{
		img.onload = function()
		{
			fCallback({width:img.width, height:img.height, url:sUrl});
		};
	}
	else
	{
		fCallback({width:img.width, height:img.height, url:sUrl});
	}
};

转载自:http://blog.csdn.net/sunlylorn/article/details/6459870

抱歉!评论已关闭.