Javascript 直接在画布上绘制jpeg数组

Javascript 直接在画布上绘制jpeg数组,javascript,image-processing,html5-canvas,Javascript,Image Processing,Html5 Canvas,此时,我从信号器连接获取JPEG的字节数组,并将其加载到图像中,在image.onload事件中,我将图像绘制到画布上 因此: 这很有效 我想知道我是否可以通过直接将图像绘制到画布上而不首先将其加载到图像中来“加快”这个过程 有可能吗?如果您在声明时收到一个字节数组(假设为ArrayBuffer),则可以将其包装为Blob对象,并为其创建一个对象URL。这将节省编码和解码Base-64的大量开销: 例子: 如果在声明时接收到字节数组(假设为ArrayBuffer),则可以将其包装为Blob对象,

此时,我从信号器连接获取JPEG的字节数组,并将其加载到图像中,在image.onload事件中,我将图像绘制到画布上

因此:

这很有效

我想知道我是否可以通过直接将图像绘制到画布上而不首先将其加载到图像中来“加快”这个过程


有可能吗?

如果您在声明时收到一个字节数组(假设为ArrayBuffer),则可以将其包装为Blob对象,并为其创建一个对象URL。这将节省编码和解码Base-64的大量开销:

例子:
如果在声明时接收到字节数组(假设为ArrayBuffer),则可以将其包装为Blob对象,并为其创建对象URL。这将节省编码和解码Base-64的大量开销:

例子:
如果在声明时接收到字节数组(假设为ArrayBuffer),则可以将其包装为Blob对象,并为其创建对象URL。这将节省编码和解码Base-64的大量开销:

例子:
如果在声明时接收到字节数组(假设为ArrayBuffer),则可以将其包装为Blob对象,并为其创建对象URL。这将节省编码和解码Base-64的大量开销:

例子:
嗨,我现在就试试这个。谢谢您好,我收到错误:Uncaught TypeError:构造“Blob”失败:提供的第一个参数为null,或者是无效的数组对象。“jpeg”不是null。是否需要将jpeg字节数组转换为ArrayBuffer?如果您使用console.log(jpeg),控制台会怎么说?snaphot:/9j/4AAQSKZJRgabaqEABGAAD/2WBDAAGGBCGBQGHBWCGKDBQNDASLDBKshew8Uhrofh0AHBWGJC4niciXWCKDCPLDAXNDQ0HYC5PTGYPC4ZNDL/2WBDAQKJCQWLDBGNDRGYIRMJYYMJYYMJYYMJYYYMJHI,我现在就尝试一下。谢谢您好,我收到错误:Uncaught TypeError:构造“Blob”失败:提供的第一个参数为null,或者是无效的数组对象。“jpeg”不是null。是否需要将jpeg字节数组转换为ArrayBuffer?如果您使用console.log(jpeg),控制台会怎么说?snaphot:/9j/4AAQSKZJRgabaqEABGAAD/2WBDAAGGBCGBQGHBWCGKDBQNDASLDBKshew8Uhrofh0AHBWGJC4niciXWCKDCPLDAXNDQ0HYC5PTGYPC4ZNDL/2WBDAQKJCQWLDBGNDRGYIRMJYYMJYYMJYYMJYYYMJHI,我现在就尝试一下。谢谢您好,我收到错误:Uncaught TypeError:构造“Blob”失败:提供的第一个参数为null,或者是无效的数组对象。“jpeg”不是null。是否需要将jpeg字节数组转换为ArrayBuffer?如果您使用console.log(jpeg),控制台会怎么说?snaphot:/9j/4AAQSKZJRgabaqEABGAAD/2WBDAAGGBCGBQGHBWCGKDBQNDASLDBKshew8Uhrofh0AHBWGJC4niciXWCKDCPLDAXNDQ0HYC5PTGYPC4ZNDL/2WBDAQKJCQWLDBGNDRGYIRMJYYMJYYMJYYMJYYYMJHI,我现在就尝试一下。谢谢您好,我收到错误:Uncaught TypeError:构造“Blob”失败:提供的第一个参数为null,或者是无效的数组对象。“jpeg”不是null。是否需要将jpeg字节数组转换为ArrayBuffer?如果您使用console.log(jpeg),控制台会怎么说?snaphot:/9j/4AAQSKZJRgabaqEABGAAD/2WBDAAGGGBGCGBQGHBWCJCQDBQNDASDLDBKSEW8UHROFH0AHBWGJC4NICISIXWCKDCPLDAXNDQ0HYC5PTGYPC4ZNDL/2WBDAQKJCQWLDBGNDRGYIRMJYYMJYMJYMJYMJYMJYMJ
desktopImage.onload = function () {
    myCanvasContext.drawImage(desktopImage, 0, 0);
}

chat.client.broadcastMessage = function (jpeg) {
    desktopImage.src = 'data:image/jpeg;base64,' + jpeg;
}
var desktopImage = new Image();
var url;

desktopImage.onload = function () {
    myCanvasContext.drawImage(desktopImage, 0, 0);
    (URL || webkitURL).revokeObjectURL(url);  // release memory
}

// assuming jpeg = ArrayBuffer:
chat.client.broadcastMessage = function (jpeg) {
    var blob = new Blob([jpeg], {type: "image/jpeg"});
    url = (URL || webkitURL).createObjectURL(blob);

    desktopImage.src = url;
}