【问题标题】:image.jpg byte array to writeablebitmap through base64 WP8image.jpg 字节数组通过 base64 WP8 到 writeablebitmap
【发布时间】:2013-01-24 22:56:27
【问题描述】:

我正在尝试将 .jpg 或 .png 文件转换为可写位图。我在另一个源中获取图像并转换为 base64 编码。去掉包装后,我有一个宽度、高度和base64数据。然后我使用:

var base64 = dataurl.Substring(dataurl.IndexOf("base64,") + 7);
binData = Convert.FromBase64String(base64);

这给了我图像的二进制数据。问题真的在于我正在为 windows phone 8 编写这个,所以我可以使用的库和方法受到限制。显而易见的选择是:

using (var stream = new MemoryStream(binData, 0, binDta.Length, true, true))
{
    var wbp = new WriteableBitmap(1,1).LoadJpeg(stream);
}

但我从 WriteableBitmap 库中得到了 System.ArgumentException。有适用于 Windows Phone 8 的想法吗?

【问题讨论】:

    标签: bytearray jpeg windows-phone-8 writeablebitmapex


    【解决方案1】:

    您应该确保经过 base64 解码的数据确实是有效的格式,例如 JPG 和 PNG。 那我推荐你试试WriteableBitmapExFromStream 方法:

    var wbp  = new WriteableBitmap(1, 1).FromStream(stream);
    

    【讨论】:

    • base 64 编码来自 javascript 行 var data = canvas.toDataURL(); 我尝试从 jpeg、png 和 bmp 图像发送画布数据,但它们总是以 image/jpg 弹出另一侧。我认为这是一种有效的格式,并且我尝试过 .FromStream(stream)。我仍然会考虑您的建议并停止尝试使用 .FromByteArray 和 .FromJpeg。还有什么提示吗?如果有帮助,我可以为您提供 .png 或 .jpg 文件中的 binData 或 base64 数据。
    • 您应该只使用 bin 数据并将其保存为 jpeg/png 文件,然后查看 Windows 是否可以打开它。只是为了确保它是有效的文件格式。
    • 想通了,你的答案都很接近。由于 windows phone 8 的“特殊”特性和字节数据的压缩特性,writeableBitmap.LoadJpeg(stream); 是正确的选择,在 Deployment.Curretn.Dispatcher.BeginInvoke(); 内部是线程依赖的乐趣。我很确定这对于我知道的任何 png 库都是不可能的。幸运的是我可以强制我所有的图片都是 jpg。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多