从这里看起来您想通过将字符串传递给 readAsArrayBuffer() 来加载本地文件,但它期望一个 blob 或文件对象。该文件可以通过浏览器文件对话框加载。步骤是:选择文件,通过 fileReader asArrayBuffer 或 asDataURL 或 asBinaryString 加载文件...并在代码中操作或使用数据。
对于此示例,它从本地文件创建一个图像并将其绘制到画布上(但是,如果它是正确的 mime 类型“image.*”)。
我不确定您要应用哪种编码/解码。但对于数据的自定义操作,我建议使用 ArrayBuffers 和 TypeArrays。
FileReader.readAsDataURL() 的示例:http: //jsfiddle.net/uvmD7/
<body>
<canvas id="cvs" width="200" height="200"></canvas>
<input type="file" id="files" name="files[]" multiple />
</body>
和脚本:
document.getElementById('files').addEventListener('change', handleFileSelect, false);
var fr = new FileReader();
function handleFileSelect(evt) {
var files = evt.target.files;
fr.readAsDataURL(files[0]);
};
fr.onload = function(evt) {
// do sth with it
var data = evt.target.result; //fr.result
img = new Image();
img.src = data;
// draw after load
img.onload = function() {
var c=document.getElementById("cvs");
var ctx=c.getContext("2d");
ctx.drawImage(img,0,0,200,180);
};
};