javascript - 如何显示特定宽度和高度的图像的一部分?

标签 javascript css image image-processing imageview

最近参与了一个web元素,有大量的图片需要处理和显示在网页上,我们知道最终用户上传的图片的宽高是不容易控制的,所以很难显示。起初,我试图通过放大/缩小图像来寻找合适的呈现方式,我做到了,但我的老板仍然对我的解决方案不满意,以下是我的方法:

var autoResizeImage = function(maxWidth, maxHeight, objImg) {
    var img = new Image();
    img.src = objImg.src;

    img.onload = function() {
        var hRatio;
        var wRatio;
        var Ratio = 1;

        var w = img.width;
        var h = img.height;

        wRatio = maxWidth / w;
        hRatio = maxHeight / h;

        if (maxWidth == 0 && maxHeight == 0) {
            Ratio = 1;
        } else if (maxWidth == 0) {
            if (hRatio < 1) {
                Ratio = hRatio;
            }
        } else if (maxHeight == 0) {
            if (wRatio < 1) {
                Ratio = wRatio;
            }
        } else if (wRatio < 1 || hRatio < 1) {
            Ratio = (wRatio <= hRatio ? wRatio : hRatio);
        }

        if (Ratio < 1) {
            w = w * Ratio;
            h = h * Ratio;
        }

        w = w <= 0 ? 250 : w;
        h = h <= 0 ? 370 : h;

        objImg.height = h;
        objImg.width = w;
    };
};

这种方式只是为了限制图片的最大宽度和高度,使得相册中的每张图片仍然具有不同的宽度和高度,仍然非常丑陋。

而就在此时,我知道我们可以创建一个 DIV 并将图像用作其背景图像,这种方式太复杂且不直接我不想采用。所以我想知道是否有更好的方法来显示固定宽度和高度的图像而不会出现显示失真?

谢谢。

最佳答案

我建议看一下类似 twitter bootstraps carousel 的内容.在这种情况下,他们在 div 中使用图像标签,并通过将图像属性设置为类似

img {
    height: auto;
    max-width: 100%;
}

你可以在这个 little fiddle 中看到一个小例子.

通过将高度设置为自动,它将保持比例不变。 通过设置 max-width: 100% 它不会将图像放大到超过其原始大小。

关于javascript - 如何显示特定宽度和高度的图像的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19944747/

相关文章:

html - Web 字体无法应用于在浏览器上工作的时事通讯(GMAIL、Yahoo Mail、Outlook、Hotmail 等)

Android:快速更改图像(如动画)

html - div中的图片因高差被截断,如何完整显示?

image - 从网站下载图像

javascript - 使用 Google 脚本复制页面后,电子表格公式不会更新。我该如何解决这个问题

javascript - C#/javascript,将苹果新的HEIC图片格式转换为JPG

javascript - 创建一个带有百分比数字的循环进度条

调用ajax的Javascript时间计数器

jquery - 根据调整大小和/或加载使用 jquery 移动对象

php - 使带有动态背景图片url的div成为一个链接