javascript - 将带有文件输入的多个图像上传到 Canvas 元素

标签 javascript jquery html image canvas

我通过一些 JavaScript 代码创建了多个 Canvas 元素以及一个输入文件元素。

我希望通过输入上传的图像由 Canvas 元素加载,但我很挣扎。

function addMoreFileUploads(id){
    $("#fileUploads").append('<input id="' + id + '" type="file" name="files[]" OnChange="handleImage()" /> <br><br>');
    var imageLoader = document.getElementById(id);
    imageLoader.addEventListener('change', handleImage, false);
}

function createVariables(){

    $('#canvasInsert').empty();

    alert('variable time');
    idArray.forEach(function (entry){
        var canvasName =  'canvas' + entry;
        $("#canvasInsert").append('<canvas id="'+ canvasName +'" style="border:1px solid #000000;" width="500" height="500"></canvas>');
    });
}

这是我正在使用的一些代码。 top 方法添加输入文件字段,然后我创建与输入元素的名称匹配的 Canvas 元素。我只是不确定如何使 canvas 元素从相应的文件输入加载图像。

我真的不知道如何继续,仍然是 Javascript 的初学者。

有人可以帮忙吗?

最佳答案

你必须像这样实现handleimage函数:

function handleImage(e) {

            var reader = new FileReader();
            reader.onload = function(event) {

                var thisimage = new Image();
                thisimage.onload = function() {
                };
                thisimage.src = event.target.result;


            };
            reader.readAsDataURL(e.target.files[0]);

}

然后你可以将thisimage.src分配给canvas。在循环中采用它让每个 Canvas 加载相应的图像

关于javascript - 将带有文件输入的多个图像上传到 Canvas 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21196083/

相关文章:

javascript - 如何首先为 Anime.js 元素提供打开动画,然后再提供循环动画?

javascript - 在这种情况下有没有更好的方法来使用过滤器数组?

html - IE 7-8 中的 jqGrid 在编辑/添加时在内容之上创建灰色区域而不是在其之上

javascript - Angular 自动完成返回一个空白列表

html - 元素不会显示在同一行

javascript - 按标题查找图表 (Highcharts)

javascript - 如何使用 JavaScript 返回元素的内部子元素?

jquery - 使用 jQuery 悬停

javascript - 如何从 li 值中获取一个元素并操作它的值?

javascript - jquery 使用 html5 模式验证