{"version":3,"sources":["jsdelivr-header.js","/npm/canvastoimg@0.0.2/dist/canvastoimage.js"],"names":[],"mappings":"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","file":"/npm/canvastoimg@0.0.2/dist/canvastoimage.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/canvastoimg@0.0.2/dist/canvastoimage.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.canvastoimage = factory());\n}(this, (function () { 'use strict';\n\n  // https://github.com/hongru/canvas2image/blob/master/canvas2image.js\n\n  /**\n   * covert canvas to image\n   * and save the image file\n   */\n  var Canvas2Image = function () {\n    // check if support sth.\n    var $support = function () {\n      var canvas = document.createElement('canvas');\n      var ctx = canvas.getContext('2d');\n      return {\n        canvas: !!ctx,\n        imageData: !!ctx.getImageData,\n        dataURL: !!canvas.toDataURL,\n        btoa: !!window.btoa\n      };\n    }();\n\n    var downloadMime = 'image/octet-stream';\n\n    function scaleCanvas(canvas, width, height) {\n      var devicePixelRatio = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : window.devicePixelRatio;\n      var w = canvas.width;\n      var h = canvas.height;\n\n      if (width === undefined) {\n        width = w;\n      }\n\n      if (height === undefined) {\n        height = h;\n      }\n\n      var retCanvas = document.createElement('canvas');\n      var retCtx = retCanvas.getContext('2d');\n      retCanvas.width = width * devicePixelRatio;\n      retCanvas.height = height * devicePixelRatio;\n      retCtx.drawImage(canvas, 0, 0, w, h, 0, 0, width * devicePixelRatio, height * devicePixelRatio);\n      return retCanvas;\n    }\n\n    function getDataURL(canvas, type, width, height) {\n      canvas = scaleCanvas(canvas, width, height);\n      return canvas.toDataURL(type);\n    } // save file to local with file name and file type\n\n\n    function saveFile(strData, fileType) {\n      var fileName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'name';\n      // document.location.href = strData;\n      var saveLink = document.createElement('a'); // download file name\n\n      saveLink.download = fileName + '.' + fileType; // download file data\n\n      saveLink.href = strData; // start download\n\n      saveLink.click();\n    }\n\n    function genImage(strData) {\n      var img = document.createElement('img');\n      img.src = strData;\n      return img;\n    }\n\n    function fixType(type) {\n      type = type.toLowerCase().replace(/jpg/i, 'jpeg');\n      var r = type.match(/png|jpeg|bmp|gif/)[0];\n      return 'image/' + r;\n    }\n\n    function encodeData(data) {\n      if (!window.btoa) {\n        // eslint-disable-next-line no-throw-literal\n        throw 'btoa undefined';\n      }\n\n      var str = '';\n\n      if (typeof data === 'string') {\n        str = data;\n      } else {\n        for (var i = 0; i < data.length; i++) {\n          str += String.fromCharCode(data[i]);\n        }\n      }\n\n      return btoa(str);\n    }\n\n    function getImageData(canvas) {\n      var w = canvas.width;\n      var h = canvas.height;\n      return canvas.getContext('2d').getImageData(0, 0, w, h);\n    }\n\n    function makeURI(strData, type) {\n      return 'data:' + type + ';base64,' + strData;\n    }\n    /**\n     * create bitmap image\n     * 按照规则生成图片响应头和响应体\n     */\n\n\n    var genBitmapImage = function genBitmapImage(oData) {\n      //\n      // BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx\n      // BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx\n      //\n      var biWidth = oData.width;\n      var biHeight = oData.height;\n      var biSizeImage = biWidth * biHeight * 3;\n      var bfSize = biSizeImage + 54; // total header size = 54 bytes\n      //\n      //  typedef struct tagBITMAPFILEHEADER {\n      //  WORD bfType;\n      //  DWORD bfSize;\n      //  WORD bfReserved1;\n      //  WORD bfReserved2;\n      //  DWORD bfOffBits;\n      //  } BITMAPFILEHEADER;\n      //\n\n      var BITMAPFILEHEADER = [// WORD bfType -- The file type signature; must be \"BM\"\n      0x42, 0x4d, // DWORD bfSize -- The size, in bytes, of the bitmap file\n      bfSize & 0xff, bfSize >> 8 & 0xff, bfSize >> 16 & 0xff, bfSize >> 24 & 0xff, // WORD bfReserved1 -- Reserved; must be zero\n      0, 0, // WORD bfReserved2 -- Reserved; must be zero\n      0, 0, // DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.\n      54, 0, 0, 0]; //\n      //  typedef struct tagBITMAPINFOHEADER {\n      //  DWORD biSize;\n      //  LONG  biWidth;\n      //  LONG  biHeight;\n      //  WORD  biPlanes;\n      //  WORD  biBitCount;\n      //  DWORD biCompression;\n      //  DWORD biSizeImage;\n      //  LONG  biXPelsPerMeter;\n      //  LONG  biYPelsPerMeter;\n      //  DWORD biClrUsed;\n      //  DWORD biClrImportant;\n      //  } BITMAPINFOHEADER, *PBITMAPINFOHEADER;\n      //\n\n      var BITMAPINFOHEADER = [// DWORD biSize -- The number of bytes required by the structure\n      40, 0, 0, 0, // LONG biWidth -- The width of the bitmap, in pixels\n      biWidth & 0xff, biWidth >> 8 & 0xff, biWidth >> 16 & 0xff, biWidth >> 24 & 0xff, // LONG biHeight -- The height of the bitmap, in pixels\n      biHeight & 0xff, biHeight >> 8 & 0xff, biHeight >> 16 & 0xff, biHeight >> 24 & 0xff, // WORD biPlanes -- The number of planes for the target device. This value must be set to 1\n      1, 0, // WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap\n      // has a maximum of 2^24 colors (16777216, Truecolor)\n      24, 0, // DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed\n      0, 0, 0, 0, // DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps\n      biSizeImage & 0xff, biSizeImage >> 8 & 0xff, biSizeImage >> 16 & 0xff, biSizeImage >> 24 & 0xff, // LONG biXPelsPerMeter, unused\n      0, 0, 0, 0, // LONG biYPelsPerMeter, unused\n      0, 0, 0, 0, // DWORD biClrUsed, the number of color indexes of palette, unused\n      0, 0, 0, 0, // DWORD biClrImportant, unused\n      0, 0, 0, 0];\n      var iPadding = (4 - biWidth * 3 % 4) % 4;\n      var aImgData = oData.data;\n      var strPixelData = '';\n      var biWidth4 = biWidth << 2;\n      var y = biHeight;\n      var fromCharCode = String.fromCharCode;\n\n      do {\n        var iOffsetY = biWidth4 * (y - 1);\n        var strPixelRow = '';\n\n        for (var x = 0; x < biWidth; x++) {\n          var iOffsetX = x << 2;\n          strPixelRow += fromCharCode(aImgData[iOffsetY + iOffsetX + 2]) + fromCharCode(aImgData[iOffsetY + iOffsetX + 1]) + fromCharCode(aImgData[iOffsetY + iOffsetX]);\n        }\n\n        for (var c = 0; c < iPadding; c++) {\n          strPixelRow += String.fromCharCode(0);\n        }\n\n        strPixelData += strPixelRow;\n      } while (--y);\n\n      return encodeData(BITMAPFILEHEADER.concat(BITMAPINFOHEADER)) + encodeData(strPixelData);\n    };\n    /**\n     * saveAsImage\n     * @param canvas canvasElement\n     * @param width {String} image type\n     * @param height {Number} [optional] png width\n     * @param type {string} [optional] png height\n     * @param fileName {String} image name\n     */\n\n\n    var saveAsImage = function saveAsImage(canvas, width, height, type, fileName) {\n      // save file type\n      var fileType = type;\n\n      if ($support.canvas && $support.dataURL) {\n        if (typeof canvas === 'string') {\n          canvas = document.getElementById(canvas);\n        }\n\n        if (type === undefined) {\n          type = 'png';\n        }\n\n        type = fixType(type);\n\n        if (/bmp/.test(type)) {\n          var data = getImageData(scaleCanvas(canvas, width, height));\n          var strData = genBitmapImage(data); // use new parameter: fileType\n\n          saveFile(makeURI(strData, downloadMime), fileType, fileName);\n        } else {\n          var _strData = getDataURL(canvas, type, width, height); // use new parameter: fileType\n\n\n          saveFile(_strData.replace(type, downloadMime), fileType, fileName);\n        }\n      }\n    };\n\n    var convertToImage = function convertToImage(canvas, width, height, type) {\n      if ($support.canvas && $support.dataURL) {\n        if (typeof canvas === 'string') {\n          canvas = document.getElementById(canvas);\n        }\n\n        if (type === undefined) {\n          type = 'png';\n        }\n\n        type = fixType(type);\n\n        if (/bmp/.test(type)) {\n          var data = getImageData(scaleCanvas(canvas, width, height));\n          var strData = genBitmapImage(data);\n          return genImage(makeURI(strData, 'image/bmp'));\n        } else {\n          var _strData2 = getDataURL(canvas, type, width, height);\n\n          return genImage(_strData2);\n        }\n      }\n    };\n\n    return {\n      saveAsImage: saveAsImage,\n      saveAsPNG: function saveAsPNG(canvas, width, height, fileName) {\n        return saveAsImage(canvas, width, height, 'png', fileName);\n      },\n      saveAsJPEG: function saveAsJPEG(canvas, width, height, fileName) {\n        return saveAsImage(canvas, width, height, 'jpeg', fileName);\n      },\n      saveAsGIF: function saveAsGIF(canvas, width, height, fileName) {\n        return saveAsImage(canvas, width, height, 'gif', fileName);\n      },\n      saveAsBMP: function saveAsBMP(canvas, width, height, fileName) {\n        return saveAsImage(canvas, width, height, 'bmp', fileName);\n      },\n      convertToImage: convertToImage,\n      convertToPNG: function convertToPNG(canvas, width, height) {\n        return convertToImage(canvas, width, height, 'png');\n      },\n      convertToJPEG: function convertToJPEG(canvas, width, height) {\n        return convertToImage(canvas, width, height, 'jpeg');\n      },\n      convertToGIF: function convertToGIF(canvas, width, height) {\n        return convertToImage(canvas, width, height, 'gif');\n      },\n      convertToBMP: function convertToBMP(canvas, width, height) {\n        return convertToImage(canvas, width, height, 'bmp');\n      },\n      scaleCanvas: scaleCanvas\n    };\n  }(); // Export function, used in npm\n\n  return Canvas2Image;\n\n})));\n"]}