javascript - 是否可以将 FileReader readAsArrayBuffer 数据转换为 html5 canvas 兼容的 imageData

标签 javascript canvas filereader

我正在寻找一种直接从 html5 FileReader api 将图像绘制到 Canvas 的方法。

通常的方法是创建一个新的图像对象,等待onload,然后用drawImage()绘制到 Canvas 上。

然而,对于我不需要深入探讨的特定情况,如果可能的话,我想完全绕过图像数据的加载。

由于 filereader api 支持 readAsArrayBuffer() 我想知道是否有任何方法可以获取此 arraybuffer 并将其转换为 canvas imageData 以便使用 ctx.putImageData(array) 来呈现图片。

提前致谢。

最佳答案

我认为加载图像是必要的步骤;在该过程的一端,您只有一个二进制 blob,它可以是 JPEG 或 PNG(或 BMP,任何其他 mime 类型),而在另一端,您有一个包含原始像素数据的数组。虽然从技术上讲,您可以自己编写此转换代码,但 fileReader.readAsDataURLctx.drawImage 方法会在内部为您完成此操作。

FWIW,他就是我在 Canvas 上绘制图像的方式。

// read binary data from file object
var fileRead = function(file){
    var reader = new FileReader();
    reader.onload = fileReadComplete;
    reader.readAsDataURL(file);
    };

// convert binary data to image object
var fileReadComplete = function(e){
    var img = new Image();
    img.src = e.target.result;
    (function(){
        if (img.complete){
            ctx.drawImage(img);
            }
        else {
            setTimeout(arguments.callee, 50);
            }
        })();
    };

关于javascript - 是否可以将 FileReader readAsArrayBuffer 数据转换为 html5 canvas 兼容的 imageData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15409224/

相关文章:

javascript - 推特 Bootstrap ".input-append"不适用于弹出窗口

javascript - 如果 div 打开则关闭,如果关闭则打开

javascript - 在 Javascript 中检测图像是否损坏

java - 在Java中将一个文本文件的内容复制到另一个文本文件

javascript - 结果集如何在 JavaScript 中传递?

javascript - 我将 onfocus 事件分配给元素的代码有什么问题?

javascript - 如何将一棵树或多张 Canvas 叠放在一起?

javascript - 在 ReactJS 中的 VisJS 网络图的 Canvas 上添加多个节点框选择器

java - "Constructor FileReader in class filereader.FileReader cannot be applied to given types"

javascript - 将文件 : 中的 json 数组解析为 javascript 数组