javascript - 无法从数据 Uri 绘制到 HTML 5 Canvas

标签 javascript html canvas filereader

我已经尝试了几个小时,但感到沮丧。由于未知原因,我的数据 Uri 图像不会写入我的 Canvas ......

这是我的代码...

function addImage() {

var allfiles = $("#postAttachPhoto")[0].files;
var container = $("#ajaxImageContainer");
var linkContainer = $("#scrapedLinkContainer");
var imagePreview = $("#previewImages");
var textArea = $("#postTextArea");



// Handle Inserting The Image Container and Adjusting Sizes
if (!container.is(':visible')) {
    container.show();
    textArea.removeClass('imgPad');
textArea.removeClass('bothPad');
textArea.removeClass('linkPad');

    // is the link ele visible?
    if (!linkContainer.is(':visible')) {
        textArea.addClass('imgPad');
    }
    else{
        textArea.addClass('bothPad');
        container.addClass('linkMargin');
    }
}

$(allfiles).each(function () {
    var file = $(this);
    var mime = file[0].type;
    var reader = new FileReader();


    reader.onload = function (e) {
        var imageSource = e.target.result;

        var image = new Image();
        var canvas = document.createElement('canvas');
        var imagePreview = $("#previewImages");
        var number = 1 + Math.floor(Math.random() * 1000);

        canvas.id = "canvas_"+number;
        var ctx = canvas.getContext("2d");
        var resize = {};

        image.onload = function(){
            ctx.drawImage(this,0,0);
            resize = calculateAspectRatioFit(image.width,image.height,'200','1000');
            canvas.width = resize.width;
            canvas.height = resize.height;
            imagePreview.append(canvas);

            /*var previewImage = $("<img onClick='rotateImage(this);'/>");
        previewImage.attr("style", "width:250px;");
        previewImage.attr("src", e.target.result);
        previewImage.attr("class", 'previewImg');
        previewImage.attr("class", 'previewImg');
        previewImage.attr("id", 'previewImg_' + number);
        imagePreview.append(previewImage);
        */
        };
        image.src = imageSource;


    };
    reader.readAsDataURL(file[0]);


});
autosize.update(textArea);
}

注意:注释掉的代码适用于通过图像标签显示。 主要目标是能够通过允许 90 度旋转来修改此图像。它无法通过 img 标签工作,因此我尝试加载到 Canvas 中。

最佳答案

问题在于加载图像后更改 Canvas 大小。 删除尺寸组件后,代码运行良好!

感谢@Manuel Otto 的帮助。

关于javascript - 无法从数据 Uri 绘制到 HTML 5 Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45970194/

相关文章:

javascript - Canvas 变换循环导致 chrome 省略部分循环

javascript - 旋转图像 onclick Javascript

javascript - 如何制作闪烁文本 Canvas 动画

javascript - Mongoose 似乎悄然失败了

javascript - AJAX/jquery 不适用于返回的 PHP 站点

php - 显示通过单击按钮登录的用户名

html - CSS Dropdown 在响应式 View 上扩展

delphi - FMX : Fill whole bitmap with a background color

javascript - DOM 元素删除时是否删除 jquery 插件

javascript - 回调队列(调试器)里面有什么?