有谁知道如何使用 JavaScript 按比例调整图像大小?
我试图通过添加属性height
和动态修改 DOM width
,但似乎在 IE6 上不起作用。
有谁知道如何使用 JavaScript 按比例调整图像大小?
我试图通过添加属性height
和动态修改 DOM width
,但似乎在 IE6 上不起作用。
要按比例修改图像,只需更改宽度/高度 css 属性之一,将另一个设置为自动。
image.style.width = '50%'
image.style.height = 'auto'
这将确保其纵横比保持不变。
请记住,浏览器往往会吸在很好地调整图像大小-你可能会发现,你的调整后的图像看起来可怕。
好的解决了,这是我的最终代码
if($(this).width() > $(this).height()) {
$(this).css('width',MaxPreviewDimension+'px');
$(this).css('height','auto');
} else {
$(this).css('height',MaxPreviewDimension+'px');
$(this).css('width','auto');
}
多谢你们
我在这里回答了这个问题:如何按比例调整图像大小/保持纵横比?. 我在这里复制它,因为我真的认为这是一种非常可靠的方法:)
/**
* Conserve aspect ratio of the original region. Useful when shrinking/enlarging
* images to fit into a certain area.
*
* @param {Number} srcWidth width of source image
* @param {Number} srcHeight height of source image
* @param {Number} maxWidth maximum available width
* @param {Number} maxHeight maximum available height
* @return {Object} { width, height }
*/
function calculateAspectRatioFit(srcWidth, srcHeight, maxWidth, maxHeight) {
var ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);
return { width: srcWidth*ratio, height: srcHeight*ratio };
}
与其修改图片的高度和宽度属性,不如尝试修改 CSS 的高度和宽度。
myimg = document.getElementById('myimg');
myimg.style.height = "50px";
myimg.style.width = "50px";
一个常见的“问题”是高度和宽度样式是包含单位的字符串,如上例中的“px”。
编辑 - 我认为直接设置高度和宽度而不是使用 style.height 和 style.width 应该可以工作。它还具有已经具有原始尺寸的优点。你能贴一下你的代码吗?您确定您处于标准模式而不是怪癖模式吗?
这应该有效:
myimg = document.getElementById('myimg');
myimg.height = myimg.height * 2;
myimg.width = myimg.width * 2;
尝试了以下代码,在 WinXP Pro SP3 上的 IE6 上运行正常。
function Resize(imgId)
{
var img = document.getElementById(imgId);
var w = img.width, h = img.height;
w /= 2; h /= 2;
img.width = w; img.height = h;
}
在 FF3 和 Opera 9.26 中也可以。