0
我試圖將.jpg或.png文件轉換爲可寫入的位圖。我從另一個源獲取圖像並轉換爲base64編碼。刪除包裝後,我有一個寬度,高度和base64數據。然後我使用:image.jpg通過base64寫入bitablebitmap的字節數組WP8
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上工作的想法?
基部64編碼來自一個JavaScript線'VAR數據;'我試圖從JPEG發送畫布數據, PNG和BMP圖像,但他們總是用image/jpg彈出另一面。我會認爲這是一個有效的格式,我試過.FromStream(流)。我仍然會考慮你的建議並停止嘗試使用.FromByteArray和.FromJpeg。還有什麼提示?如果有幫助,我可以從.png或.jpg文件中爲您提供binData或base64數據。 – rickstockham
您應該只使用bin數據並將其保存爲jpeg/png文件,然後查看Windows是否可以打開它。只是爲了確保它是一個有效的文件格式。 –
找出來了,你的答案都很接近。由於windows phone 8的'特殊'性質和字節數據的壓縮性質,'writeableBitmap.LoadJpeg(stream)'是'Deployment.Curretn.Dispatcher.BeginInvoke();'中的正確選擇,哦線程依賴的樂趣。我很確定,對於我認識的任何圖書館來說,這是不可能的。幸運的是我可以強制我的所有圖像都是JPG格式。 – rickstockham