{"version":3,"file":"watermark.mjs","sources":["../../../../../../packages/components/image/src/watermark.ts"],"sourcesContent":["function createCanvasItem(opt) {\r\n  let canvas = document.createElement('canvas')\r\n  canvas.width = opt.itemWidth\r\n  canvas.height = opt.itemHeight\r\n  let ctx = canvas.getContext('2d')\r\n\r\n  ctx!.font = `${opt.fontSize}px sans-serif`\r\n  ctx!.fillStyle = opt.color\r\n  ctx!.globalAlpha = opt.opacity\r\n\r\n  const textWidth = Math.ceil(ctx!.measureText(opt.text).width)\r\n  let x = (opt.itemWidth - textWidth) / 2\r\n  let y = (opt.itemHeight + 20) / 2\r\n\r\n  ctx!.translate(opt.itemWidth / 2, opt.itemHeight / 2)\r\n  ctx!.rotate((-opt.angle * Math.PI) / 180)\r\n  ctx!.translate(-opt.itemWidth / 2, -opt.itemHeight / 2)\r\n  ctx!.fillText(opt.text, x, y)\r\n\r\n  return canvas\r\n}\r\n\r\nexport function createWatermark(params): Promise<any> {\r\n  return new Promise((resolve, reject) => {\r\n    let defaultOpt = {\r\n      type: 'right-bottom',\r\n      fontSize: '14',\r\n      color: '#ffffff',\r\n      opacity: 1,\r\n      angle: 0,\r\n      itemWidth: 100,\r\n      itemHeight: 100,\r\n      text: ''\r\n    }\r\n\r\n    let opt = Object.assign(defaultOpt, params)\r\n    const image = new Image()\r\n    image.crossOrigin = 'anonymous' // 解决跨域问题，配合服务端设置\r\n    image.src = opt.src\r\n\r\n    const loadFn = (e) => {\r\n      const width = image.width\r\n      const height = image.height\r\n\r\n      const canvas1 = document.createElement('canvas')\r\n      const ctx1 = canvas1.getContext('2d')\r\n      canvas1.width = width\r\n      canvas1.height = height\r\n\r\n      const canvas2 = document.createElement('canvas')\r\n      const ctx2 = canvas2.getContext('2d')\r\n      canvas2.width = width\r\n      canvas2.height = height\r\n\r\n      ctx2!.font = `${opt.fontSize}px sans-serif`\r\n      ctx2!.fillStyle = opt.color\r\n      ctx2!.globalAlpha = opt.opacity\r\n      const textWidth = Math.ceil(ctx2!.measureText(opt.text).width)\r\n\r\n      // 判断水印类型\r\n      switch (opt.type) {\r\n        case 'repeat':\r\n          let canvasBackground = createCanvasItem(opt)\r\n          let patten = ctx2!.createPattern(canvasBackground, 'repeat')\r\n          ctx2!.fillStyle = patten!\r\n          ctx2!.fillRect(0, 0, width, height)\r\n          break\r\n        case 'left-top':\r\n          ctx2!.fillText(opt.text, 10, 10 + opt.fontSize)\r\n          break\r\n        case 'right-top':\r\n          ctx2!.fillText(opt.text, width - 10 - textWidth, 10 + opt.fontSize)\r\n          break\r\n        case 'center-top':\r\n          ctx2!.fillText(opt.text, (width - textWidth) / 2, 10 + opt.fontSize)\r\n          break\r\n        case 'left-bottom':\r\n          ctx2!.fillText(opt.text, 10, height - 10)\r\n          break\r\n        case 'right-bottom':\r\n          ctx2!.fillText(opt.text, width - 10 - textWidth, height - 10)\r\n          break\r\n        case 'center-bottom':\r\n          ctx2!.fillText(opt.text, (width - textWidth) / 2, height - 10)\r\n          break\r\n        default:\r\n          break\r\n      }\r\n\r\n      ctx1!.clearRect(0, 0, width, height)\r\n      ctx1!.drawImage(image, 0, 0, width, height)\r\n      ctx1!.drawImage(canvas2, 0, 0, width, height)\r\n\r\n      const dataUrl = canvas1.toDataURL()\r\n      resolve(dataUrl)\r\n      image.removeEventListener('load', loadFn)\r\n    }\r\n\r\n    const errorFn = (e) => {\r\n      reject(e)\r\n      image.removeEventListener('error', errorFn)\r\n    }\r\n\r\n    image.addEventListener('load', loadFn)\r\n    image.addEventListener('error', errorFn)\r\n  })\r\n}\r\n"],"names":[],"mappings":"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"}