mirror of
https://github.com/owncloudarchive/contacts.git
synced 2024-12-03 15:24:09 +01:00
8c3d7ccdba
Remove old combobox user bower for onfontresize Add jcrop + md5 Add files to scrutinizer ignore list Remove misplaced text Selected the right MultiSelect library via bower Move bower dependencies to correct location
96 lines
3.7 KiB
JavaScript
96 lines
3.7 KiB
JavaScript
/*
|
|
* JavaScript Canvas to Blob 2.0.5
|
|
* https://github.com/blueimp/JavaScript-Canvas-to-Blob
|
|
*
|
|
* Copyright 2012, Sebastian Tschan
|
|
* https://blueimp.net
|
|
*
|
|
* Licensed under the MIT license:
|
|
* http://www.opensource.org/licenses/MIT
|
|
*
|
|
* Based on stackoverflow user Stoive's code snippet:
|
|
* http://stackoverflow.com/q/4998908
|
|
*/
|
|
|
|
/*jslint nomen: true, regexp: true */
|
|
/*global window, atob, Blob, ArrayBuffer, Uint8Array, define */
|
|
|
|
(function (window) {
|
|
'use strict';
|
|
var CanvasPrototype = window.HTMLCanvasElement &&
|
|
window.HTMLCanvasElement.prototype,
|
|
hasBlobConstructor = window.Blob && (function () {
|
|
try {
|
|
return Boolean(new Blob());
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}()),
|
|
hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array &&
|
|
(function () {
|
|
try {
|
|
return new Blob([new Uint8Array(100)]).size === 100;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}()),
|
|
BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||
|
|
window.MozBlobBuilder || window.MSBlobBuilder,
|
|
dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob &&
|
|
window.ArrayBuffer && window.Uint8Array && function (dataURI) {
|
|
var byteString,
|
|
arrayBuffer,
|
|
intArray,
|
|
i,
|
|
mimeString,
|
|
bb;
|
|
if (dataURI.split(',')[0].indexOf('base64') >= 0) {
|
|
// Convert base64 to raw binary data held in a string:
|
|
byteString = atob(dataURI.split(',')[1]);
|
|
} else {
|
|
// Convert base64/URLEncoded data component to raw binary data:
|
|
byteString = decodeURIComponent(dataURI.split(',')[1]);
|
|
}
|
|
// Write the bytes of the string to an ArrayBuffer:
|
|
arrayBuffer = new ArrayBuffer(byteString.length);
|
|
intArray = new Uint8Array(arrayBuffer);
|
|
for (i = 0; i < byteString.length; i += 1) {
|
|
intArray[i] = byteString.charCodeAt(i);
|
|
}
|
|
// Separate out the mime component:
|
|
mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
|
|
// Write the ArrayBuffer (or ArrayBufferView) to a blob:
|
|
if (hasBlobConstructor) {
|
|
return new Blob(
|
|
[hasArrayBufferViewSupport ? intArray : arrayBuffer],
|
|
{type: mimeString}
|
|
);
|
|
}
|
|
bb = new BlobBuilder();
|
|
bb.append(arrayBuffer);
|
|
return bb.getBlob(mimeString);
|
|
};
|
|
if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {
|
|
if (CanvasPrototype.mozGetAsFile) {
|
|
CanvasPrototype.toBlob = function (callback, type, quality) {
|
|
if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {
|
|
callback(dataURLtoBlob(this.toDataURL(type, quality)));
|
|
} else {
|
|
callback(this.mozGetAsFile('blob', type));
|
|
}
|
|
};
|
|
} else if (CanvasPrototype.toDataURL && dataURLtoBlob) {
|
|
CanvasPrototype.toBlob = function (callback, type, quality) {
|
|
callback(dataURLtoBlob(this.toDataURL(type, quality)));
|
|
};
|
|
}
|
|
}
|
|
if (typeof define === 'function' && define.amd) {
|
|
define(function () {
|
|
return dataURLtoBlob;
|
|
});
|
|
} else {
|
|
window.dataURLtoBlob = dataURLtoBlob;
|
|
}
|
|
}(this));
|