|
@@ -27803,3 +27803,99 @@ JSON.stringify(result);
|
|
|
$.loadImage = loadImage;
|
|
|
}
|
|
|
}(this));
|
|
|
+
|
|
|
+/*
|
|
|
+ * 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));
|