Jquery 如何在画布上绘制图像并正确调整其大小?
我很难让我的画布绘制img的大小和看起来完全像实际的img元素。每次我试着给它一个尺寸,它就好像被裁剪了。如何在jQuery中获得img元素的大小,然后在画布元素上使用它来制作精确的副本 这里有一些演示代码 jQuerydocument.readyfunction${ var img=$'.image'; var canvas=$'.img_canvas'; canvas.height img.height; canvas.width img.width; var context=canvas[0]。getContext'2d'; context.drawImageimg[0],0,0; }; 身体{ 保证金:0; } img{ 宽度:100%; 高度:自动; } 我们的浏览器不支持HTML5画布,请考虑更新或更改浏览器以获得更好的体验。Jquery 如何在画布上绘制图像并正确调整其大小?,jquery,html,html5-canvas,Jquery,Html,Html5 Canvas,我很难让我的画布绘制img的大小和看起来完全像实际的img元素。每次我试着给它一个尺寸,它就好像被裁剪了。如何在jQuery中获得img元素的大小,然后在画布元素上使用它来制作精确的副本 这里有一些演示代码 jQuerydocument.readyfunction${ var img=$'.image'; var canvas=$'.img_canvas'; canvas.height img.height; canvas.width img.width; var context=canvas
有几根电线 jQuery函数img.width和img.height将提供DOM中的图像大小,而不是实际的图像文件分辨率。对于这一点,有必要。 类似地,jQuery函数canvas.height320和canvas.width240将设置CSS宽度和高度,而不是画布分辨率。您需要的是直接设置canvasdom元素的width和height属性,而不是jQuery节点。想象一下:你可以有一个像素分辨率为320x240的画布,但你希望它通过css全屏显示。 具有三个参数的drawImage将始终以其自然分辨率绘制图像。可以传入更多参数以调整图像大小。 因此,实际的问题是根据图像的dom大小调整画布大小。希望有帮助 jQuerydocument.readyfunction${ var img=$'.image'; var canvas=$'.img_canvas'; 画布[0]。高度=img[0]。自然高度; 画布[0]。宽度=img[0]。自然宽度; var context=canvas[0]。getContext'2d'; context.drawImageimg[0],0,0; }; 身体{ 保证金:0; } img{ 宽度:100%; 高度:自动; } 帆布{ 显示:块; } 图片: 画布: 我们的浏览器不支持HTML5画布,请考虑更新或更改浏览器以获得更好的体验。
这不是jQuery,但你应该了解它。使用新图像创建图像,然后在加载事件中调用drawImage方法,同时从加载的图像设置画布的高度和宽度属性
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title></title>
<style>
img.image{
border:2px solid blue
}
canvas{
border:2px solid red;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', function(){
let canvas=document.querySelector('canvas');
let ctxt=canvas.getContext('2d');
let oImg=new Image();
oImg.onload=function(){
canvas.width = oImg.width;
canvas.height = oImg.height;
ctxt.drawImage( oImg, 0, 0, canvas.width, canvas.height );
}
oImg.src=document.querySelector('img.image').src;
})
</script>
</head>
<body>
<img class='image' src="https://picsum.photos/seed/picsum/400/300" />
<canvas>
This Web-Browser does not support the "HTML5 Canvas", please consider
updating or changing your browser for a better experience.
</canvas>
</body>
</html>
图像{
边框:2件纯蓝
}
帆布{
边框:2倍纯红;
}
此Web浏览器不支持HTML5画布,请考虑
更新或更改浏览器以获得更好的体验。