JavaScript - 从二进制JPG数据创建图像

时间:2014-04-26 11:03:52

标签: javascript html5-canvas jpeg

由于浏览器知道如何处理JPG文件,有没有办法动态地为它们提供JPG文件的实际二进制数据并允许它们对其进行解码?

我无法将文件作为普通的image.src =“path.jpg”提供,因为数据最初是另一个在JS中解析的文件的一部分。

此外,我有奇怪的JPG文件存储alpha,因此像https://github.com/notmasteryet/jpgjs这样的库无法处理它们。

1 个答案:

答案 0 :(得分:7)

您可以使用Blob从二进制数据创建对象,您稍后将其作为图像解码的URL传递。假设您将二进制数据存储为类型数组,您可以执行以下操作:

var blob = new Blob([myTypedArray], {type: 'application/octet-binary'});
var url = URL.createObjectURL(blob);

现在您可以将该网址作为图片来源传递:

var img = new Image;
img.onload = function() {
    URL.revokeObjectURL(url);
    ...
};
img.src = url;

请注意,您仍然确保传入的数据是浏览器可以处理的有效图像格式。