The blob object is created by Javascript API, and the blob object URL is created by method createObjectURL
also in Javascript. This object URL that format with blob:ms-appx-web://...
is recognized by HTML but may not be recognized by UWP APIs.
To read the blob data, you could create Data URLs for the image blob object instead. Data URLs prefixed with the data: scheme and data encoded into base64 format. Then in UWP the base64 data could be converted to image source.
Details for how to convert image into base64 string using javascript please reference this thread.The following is just for example:
.html
<head>
<script type='text/javascript'>
function toDataURL(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
toDataURL('https://....jpeg', function (dataUrl) {
window.external.notify(dataUrl);
document.querySelector("#image").src = dataUrl;
})
</script>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="myDiv">
<image id="image" />
</div>
</body>
xaml.cs
private void Webview_ScriptNotify(object sender, NotifyEventArgs e)
{
var result = e.Value;
resultimage = result.Substring(result.IndexOf(",")+1);
}
private async void btngetblob_Click(object sender, RoutedEventArgs e)
{
byte[] imageBytes = Convert.FromBase64String(resultimage);
StorageFolder storageFolder = await KnownFolders.GetFolderForUserAsync(null /* current user */, KnownFolderId.PicturesLibrary);
StorageFile file = await storageFolder.CreateFileAsync("new.jpg", CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream randomstream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
DataWriter writer = new DataWriter(randomstream);
writer.WriteBytes(imageBytes);
await writer.StoreAsync();
await writer.FlushAsync();
}
}