我正在处理的一个网站有很多从数据库中提取的图像。图像的尺寸不一致,我试图将它们显示在统一大小的框(div)中。我不知道任何图像的尺寸,但我可以通过以下方式检索它们:
document.getElementById( myImage ).width
document.getElementById( myImage ).height
在此之后,我进行测试以查看如何调整图像大小以适合统一框。最后我设置了效果:
document.getElementById( myImage ).width = theNewWidth
document.getElementById( myImage ).height = theNewHeight
onload="resizingFunction( imgId );"
通过在 img 标签中使用,每个图像只调用一次此函数。数据库中的每个图像完成此功能大约需要 1-2 秒,并且该功能永远不会再为任何这些图像运行。尽管从未再次运行,但如果我使用此功能,该站点的运行速度会明显变慢。谷歌搜索后,我尝试添加:
document.getElementById( myImage ).removeAttribute("width")
document.getElementById( myImage ).removeAttribute("height")
在设置新的宽度和高度之前。这确实提高了速度,但它仍然比我没有调整图像大小时要慢。同样,为了澄清起见,每张图片在加载后都会调整一次大小,但由于某种原因,这仍然会减慢网站的速度。
图像是通过 PHP 回显到 JavaScript 中创建的。这是必要的,因为它们需要来自数据库 (PHP) 的信息,而 JavaScript 将它们放置在正确的框 (div) 中。这是图像代码的创建:
echo "\t\t\tdocument.getElementById('gBox".$i."').innerHTML = '<img onload=\"image_applyToGrid(".$i.");\" id=\"img".$i."\" style=\"left:0; top:0;\" src=\"'+gBoxes[".$i."].imgPath+'\"/>';\n";
这是图像在加载后调用的图像大小调整函数:
function image_applyToGrid(inId) {
inIdImage = document.getElementById("img"+inId);
var imgW = inIdImage.width;
var imgH = inIdImage.height;
if (imgW > imgH) {
var proportions = imgW/imgH;
imgH = gridUnit;
imgW = gridUnit*proportions;
inIdImage.style.left = -((imgW-gridUnit)>>1)+"px";
}
else {
var proportions = imgH/imgW;
imgW = gridUnit;
imgH = gridUnit*proportions;
inIdImage.style.top = -((imgH-gridUnit)>>1)+"px";
}
inIdImage.removeAttribute("width");
inIdImage.removeAttribute("height");
inIdImage.width = imgW;
inIdImage.height = imgH;
}