Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在画布上绘制图像并正确调整其大小?_Jquery_Html_Html5 Canvas - Fatal编程技术网

Jquery 如何在画布上绘制图像并正确调整其大小?

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

我很难让我的画布绘制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函数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画布,请考虑 更新或更改浏览器以获得更好的体验。