You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/AlmostEngine/Plugins/WebGL/WebGLUtils.jslib

56 lines
1.5 KiB
JavaScript

var ImageDownloaderPlugin = {
_ExportImage: function(data, filename, format) {
var imageData = Pointer_stringify(data);
var imageFileName = Pointer_stringify(filename);
var contentType = 'image/'+ format;
// Converts the image data to binary
// From http://stackoverflow.com/questions/14967647/
// encode-decode-image-with-base64-breaks-image (2013-04-21)
function fixBinary (data) {
var length = data.length;
var binary = new ArrayBuffer(length);
var arr = new Uint8Array(binary);
for (var i = 0; i < length; i++)
{
arr[i] = data.charCodeAt(i);
}
return binary;
}
var binary = fixBinary(atob(imageData));
// Creates an image Blob
var imageBlob = new Blob([binary], {type: contentType});
// Creates a clickable link that will download the image
var link = document.createElement('a');
link.download = imageFileName;
link.innerHTML = 'DownloadFile';
link.setAttribute('id', 'ImageDownloaderLink');
// Creates the click URL
if(window.webkitURL != null) {
link.href = window.webkitURL.createObjectURL(imageBlob);
}
else {
link.href = window.URL.createObjectURL(imageBlob);
// Creates the click function
link.onclick = function()
{
var child = document.getElementById('ImageDownloaderLink');
child.parentNode.removeChild(child);
};
link.style.display = 'none';
document.body.appendChild(link);
}
//Calling the link click action
link.click();
}
};
mergeInto(LibraryManager.library, ImageDownloaderPlugin);