jquery - 将以百分比表示的图像尺寸转换为像素

标签 jquery html css

我在 div 元素中有一个 img 元素,如下所示:

<div class='img-container col-md-12' id='box'> 
    <img src='/img/sample.png' id='srcImg' style='width:100%'>
</div>

在这里,我尝试使用 Canvas 将加载的大图像完全从现有图像放入分区元素,效果很好。现在我正在尝试使用以下方法获取在浏览器中呈现的图像尺寸:

var $srcImg = document.getElementById('srcImg');
var utilCanvas = document.createElement('canvas');
utilCanvas.width = $srcImg.naturalWidth;
utilCanvas.height = $srcImg.naturalHeight;
var ctx = utilCanvas.getContext("2d");
ctx.drawImage($srcImg, 0, 0);

var img = new Image();
img.id = 'tempImg';
img.src = utilCanvas.toDataURL();
img.style.width = '100%';
$srcImg.parentNode.insertBefore(img, $srcImg.nextSibling);

// Get the rendered image dimensions
var w = $('#tempImg').innerWidth();
var h = $('#tempImg').innerHeight();
print('Width: '+w+' ,Height: '+h);

输出为:宽度:100,高度:0

当我在浏览器控制台窗口中尝试同样的事情时,它会给我正确的结果。

做同样的事情的正确方法是什么?

最佳答案

将您的高度/宽度检查包装在 img.onload = function(){//code } 中。图像始终异步加载。

    var img = document.createElement("img");
    img.src = utilCanvas.toDataURL();
    img.id = "imgId";
    img.style.visibility = "hidden";
    document.body.appendChild(img);

    img.onload = function () {

       //  code -> use imgId to grab the image..

    }

关于jquery - 将以百分比表示的图像尺寸转换为像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49257264/

相关文章:

html - 用于打印的 Bootstrap 网格

javascript - 使用 CSS 设置 Highcharts 颜色主题

javascript - 为什么滑动效果后div内容跳转

css - 当窗口大小调整时,div 移动到另一个 div 下方

javascript - 全宽 slider - 交叉淡入淡出过渡问题

javascript - 多个类的选择不起作用

html - 我需要让我的网站适合屏幕

javascript - 将一个 HTML 元素滚动到另一个元素的中心

javascript - 同一页面多个链接无效

jquery - 如何根据在 jquery 文本框中扫描的值在行列表中交换特定行