Javascript WinJS,显示字节数组中的图像?
我正在寻找一种显示存储在字节数组中的JPEG图像的方法。这是一个内置Javascript的Windows 8应用商店应用程序。字节数组是从C#WinRT组件返回的。它在C中的类型是Javascript WinJS,显示字节数组中的图像?,javascript,windows-8,windows-store-apps,winjs,Javascript,Windows 8,Windows Store Apps,Winjs,我正在寻找一种显示存储在字节数组中的JPEG图像的方法。这是一个内置Javascript的Windows 8应用商店应用程序。字节数组是从C#WinRT组件返回的。它在C中的类型是字节[] 基本上,我想要的是得到一个对象,这样我就可以调用: URL.createObjectURL(bytearray, {oneTimeOnly: true}); 上。当前,由于不支持阵列接口,因此会生成运行时错误 提前感谢。我找到的当前解决方案非常全面。因此,在给出字节到URL的解决方案之前,请注意以下几点:
字节[]
基本上,我想要的是得到一个对象,这样我就可以调用:
URL.createObjectURL(bytearray, {oneTimeOnly: true});
上。当前,由于不支持阵列接口,因此会生成运行时错误
提前感谢。我找到的当前解决方案非常全面。因此,在给出字节到URL的解决方案之前,请注意以下几点:
var bytes;
var memoryStream;
var streams = Windows.Storage.Streams;
{
// get IBuffer out of bytes
var dataWriter = new streams.DataWriter();
dataWriter.writeBytes(bytes);
var buffer = dataWriter.detachBuffer();
dataWriter.close();
// get IInputStream out of IBuffer
memoryStream = new streams.InMemoryRandomAccessStream();
return memoryStream.writeAsync(buffer);
}).then(function onmemorystreamwritecomplete()
{
var inputStream = memoryStream.getInputStreamAt(0);
// get DOM MSStream from IInputStream
var domMStream = MSApp.createStreamFromInputStream('image/jpg', inputStream);
var url = URL.createObjectURL(domMStream, { oneTimeOnly: true });
memoryStream.close();
test3Img.setAttribute('src', url);
})
我发现了一个简单得多的方法
var blob = new Blob([bytes], {type: "image/jpg"});
var url = URL.createObjectURL(blob, { oneTimeOnly: true });
Blob
实际上由URL.createObjectURL
直接支持。唯一需要注意的是,您必须指定mime格式来标识缓冲区格式,在我的例子中,这是可能的。您是否检查过WinJS.xhr:Hmm。。我不是在寻找下载或传输文件的方法。xhr对我的情况有什么帮助?该图像不是来自web。虽然我在WinJS中不专业,但我找到了文件到字节数组解决方案,这可能会有所帮助:嗨,非常感谢您提供的解决方案。我确实可以控制C#WinRT组件。转换程序与此相同吗?为什么您会建议在组件中这样做,这是一个性能问题吗?保持简单总是有帮助的。这个代码段执行bytes->IBuffer->IInputStream->MSStream->URL,而另一个代码段可以执行StorageFile->File->URL。顺便问一下,在c#winrt组件中从文件中读取字节有什么原因吗。这可以在js代码中完成。