Javascript 图像大小调整

IT技术 javascript internet-explorer-6 image-manipulation
2021-02-21 02:24:05

有谁知道如何使用 JavaScript 按比例调整图像大小?

我试图通过添加属性height和动态修改 DOM width,但似乎在 IE6 上不起作用。

6个回答

要按比例修改图像,只需更改宽度/高度 css 属性之一,将另一个设置为自动。

image.style.width = '50%'
image.style.height = 'auto'

这将确保其纵横比保持不变。

请记住,浏览器往往会在很好地调整图像大小-你可能会发现,你的调整后的图像看起来可怕。

在上传到服务器之前,可能会在调整图像大小时添加一个简介
2021-05-01 02:24:05

好的解决了,这是我的最终代码

if($(this).width() > $(this).height()) { 
 $(this).css('width',MaxPreviewDimension+'px');
 $(this).css('height','auto');
} else {
 $(this).css('height',MaxPreviewDimension+'px');
 $(this).css('width','auto');
}

多谢你们

顺便说一句,除非您在图像上设置了高度(height属性或通过 CSS),否则您不需要显式设置 height: auto- 默认情况下设置为
2021-04-23 02:24:05
奇怪的是,我确定我之前已经这样做过并且可以正常工作。无论如何,我会相信你的话 :) 不过你可以在样式表中应用该 height:auto
2021-05-05 02:24:05
var target = $(this); if (target.width() > target.height()) target.css({ "width": MaxPreviewDimension + "px", "height": "auto" }); else target.css({ "height": MaxPreviewDimension + "px", "width": auto })
2021-05-08 02:24:05
我的理解是,在 jQuery 中,$() 是一个类构造函数。这意味着这段代码将始终为“this”实例化四个包装器,而如果将它存储在一个变量中,则只有一个包装器会这样做。我什至可能想将 $(this) 存储在构造函数中的类级变量中。
2021-05-10 02:24:05
不,当我调整宽度而不将高度设置为自动时,它在 IE6 中失败
2021-05-16 02:24:05

我在这里回答了这个问题:如何按比例调整图像大小/保持纵横比?. 我在这里复制它,因为我真的认为这是一种非常可靠的方法:)

 /**
  * 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 中也可以。