javascript - 基于所选图像的动态 Canvas 高度和宽度

标签 javascript jquery html css canvas

我正在尝试根据所选图像绘制 Canvas 图像

<canvas id="canvas" ></canvas>
<input type="file" id="file-input">

Javascript

$(function() {
    $('#file-input').change(function(e) {
        var file = e.target.files[0],
            imageType = /image.*/;

        if (!file.type.match(imageType))
            return;

        var reader = new FileReader();
        reader.onload = fileOnload;
        reader.readAsDataURL(file);

    });

    function fileOnload(e) {
        var $img = $('<img>', { src: e.target.result });
        var canvas = $('#canvas')[0];
        var context = canvas.getContext('2d');

        $img.load(function() {
            context.drawImage(this, 0, 0);
        });
    }
});

这会将文件写入 Canvas ,但我面临的问题是,它只将图像写入 Canvas 的高度和宽度。

如何让 Canvas 宽度高度自动设置为所选图像的高度和宽度

JSFIDDLE DEMO

与原始图像相比,正在绘制的图像非常巨大

最佳答案

由于我没有足够的积分,我无法评论之前的答案。

您应该更新 Canvas dom 元素的高度和宽度。

var canvas = document.getElementsByTagName('canvas')[0];
$img.load(function() {
        canvas.width  = this.width;
        canvas.height = this.height;
        context.drawImage(this, 0, 0);
});

工作演示:jsfiddle

关于javascript - 基于所选图像的动态 Canvas 高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31853794/

相关文章:

javascript - 保留 proc.stdout.on() 结果?

javascript - 更少的 CSS 问题

javascript - 根据另一个填充 1 个表单域

javascript - find 不适用于类名

javascript - 错误: defined function is not a function

javascript - 在 React Native 应用程序中调试 WebView

javascript - 传递整数时 chop 宽度函数不起作用

html - Div block 宽度不占用具有绝对位置的嵌套div标签中的整个 block

javascript - 将只读值与用户输入的值进行比较

jquery 选择 float 子项的每个 "row"