canvas toBlob ,ie兼容
Posted mvloveyouforever
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了canvas toBlob ,ie兼容相关的知识,希望对你有一定的参考价值。
/* canvas-toBlob.js * A canvas.toBlob() implementation. * 2016-05-26 * * By Eli Grey, http://eligrey.com and Devin Samarin, https://github.com/eboyjr * License: MIT * See https://github.com/eligrey/canvas-toBlob.js/blob/master/LICENSE.md */ /*global self */ /*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, plusplus: true */ /*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */ (function(view) "use strict"; var Uint8Array = view.Uint8Array , htmlCanvasElement = view.HTMLCanvasElement , canvas_proto = HTMLCanvasElement && HTMLCanvasElement.prototype , is_base64_regex = /\s*;\s*base64\s*(?:;|$)/i , to_data_url = "toDataURL" , base64_ranks , decode_base64 = function(base64) var len = base64.length , buffer = new Uint8Array(len / 4 * 3 | 0) , i = 0 , outptr = 0 , last = [0, 0] , state = 0 , save = 0 , rank , code , undef ; while (len--) code = base64.charCodeAt(i++); rank = base64_ranks[code-43]; if (rank !== 255 && rank !== undef) last[1] = last[0]; last[0] = code; save = (save << 6) | rank; state++; if (state === 4) buffer[outptr++] = save >>> 16; if (last[1] !== 61 /* padding character */) buffer[outptr++] = save >>> 8; if (last[0] !== 61 /* padding character */) buffer[outptr++] = save; state = 0; // 2/3 chance there‘s going to be some null bytes at the end, but that // doesn‘t really matter with most image formats. // If it somehow matters for you, truncate the buffer up outptr. return buffer; ; if (Uint8Array) base64_ranks = new Uint8Array([ 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1 , -1, -1, 0, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 , -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 , 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 ]); if (HTMLCanvasElement && (!canvas_proto.toBlob || !canvas_proto.toBlobHD)) if (!canvas_proto.toBlob) canvas_proto.toBlob = function(callback, type /*, ...args*/) if (!type) type = "image/png"; if (this.mozGetAsFile) callback(this.mozGetAsFile("canvas", type)); return; if (this.msToBlob && /^\s*image\/png\s*(?:$|;)/i.test(type)) callback(this.msToBlob()); return; var args = Array.prototype.slice.call(arguments, 1) , dataURI = this[to_data_url].apply(this, args) , header_end = dataURI.indexOf(",") , data = dataURI.substring(header_end + 1) , is_base64 = is_base64_regex.test(dataURI.substring(0, header_end)) , blob ; if (Blob.fake) // no reason to decode a data: URI that‘s just going to become a data URI again blob = new Blob if (is_base64) blob.encoding = "base64"; else blob.encoding = "URI"; blob.data = data; blob.size = data.length; else if (Uint8Array) if (is_base64) blob = new Blob([decode_base64(data)], type: type); else blob = new Blob([decodeURIComponent(data)], type: type); callback(blob); ; if (!canvas_proto.toBlobHD && canvas_proto.toDataURLHD) canvas_proto.toBlobHD = function() to_data_url = "toDataURLHD"; var blob = this.toBlob(); to_data_url = "toDataURL"; return blob; else canvas_proto.toBlobHD = canvas_proto.toBlob; (typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
以上是关于canvas toBlob ,ie兼容的主要内容,如果未能解决你的问题,请参考以下文章