plate-renderer 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +6 -5
  2. package/package.json +33 -29
  3. package/dist/140_0-P4kPL3qg.js +0 -6
  4. package/dist/140_0-P4kPL3qg.js.map +0 -1
  5. package/dist/140_1-DTCEP18C.js +0 -6
  6. package/dist/140_1-DTCEP18C.js.map +0 -1
  7. package/dist/140_2-jCbTymCM.js +0 -6
  8. package/dist/140_2-jCbTymCM.js.map +0 -1
  9. package/dist/140_3-DVPX5swr.js +0 -6
  10. package/dist/140_3-DVPX5swr.js.map +0 -1
  11. package/dist/140_4-CY3aiRoa.js +0 -6
  12. package/dist/140_4-CY3aiRoa.js.map +0 -1
  13. package/dist/140_5-CaYieX8z.js +0 -6
  14. package/dist/140_5-CaYieX8z.js.map +0 -1
  15. package/dist/140_6-RoEaG1mC.js +0 -6
  16. package/dist/140_6-RoEaG1mC.js.map +0 -1
  17. package/dist/140_7-LcqrVA6X.js +0 -6
  18. package/dist/140_7-LcqrVA6X.js.map +0 -1
  19. package/dist/140_8-ODrXpep4.js +0 -6
  20. package/dist/140_8-ODrXpep4.js.map +0 -1
  21. package/dist/140_9-JwkcXozu.js +0 -6
  22. package/dist/140_9-JwkcXozu.js.map +0 -1
  23. package/dist/140_A-CXkIw5WE.js +0 -6
  24. package/dist/140_A-CXkIw5WE.js.map +0 -1
  25. package/dist/140_B-Disv-WCR.js +0 -6
  26. package/dist/140_B-Disv-WCR.js.map +0 -1
  27. package/dist/140_C-B1INaeP8.js +0 -6
  28. package/dist/140_C-B1INaeP8.js.map +0 -1
  29. package/dist/140_D-CmQhgtVf.js +0 -6
  30. package/dist/140_D-CmQhgtVf.js.map +0 -1
  31. package/dist/140_E-CnmM7mgG.js +0 -6
  32. package/dist/140_E-CnmM7mgG.js.map +0 -1
  33. package/dist/140_F-m6iwrBy1.js +0 -6
  34. package/dist/140_F-m6iwrBy1.js.map +0 -1
  35. package/dist/140_G-uR9QE4Su.js +0 -6
  36. package/dist/140_G-uR9QE4Su.js.map +0 -1
  37. package/dist/140_H-nJkstUeX.js +0 -6
  38. package/dist/140_H-nJkstUeX.js.map +0 -1
  39. package/dist/140_J-G5MYpmYx.js +0 -6
  40. package/dist/140_J-G5MYpmYx.js.map +0 -1
  41. package/dist/140_K-ByWSsRGa.js +0 -6
  42. package/dist/140_K-ByWSsRGa.js.map +0 -1
  43. package/dist/140_L-D25verQ5.js +0 -6
  44. package/dist/140_L-D25verQ5.js.map +0 -1
  45. package/dist/140_M-Bal3rxCL.js +0 -6
  46. package/dist/140_M-Bal3rxCL.js.map +0 -1
  47. package/dist/140_N-axDnHiDN.js +0 -6
  48. package/dist/140_N-axDnHiDN.js.map +0 -1
  49. package/dist/140_P-CQiovL9o.js +0 -6
  50. package/dist/140_P-CQiovL9o.js.map +0 -1
  51. package/dist/140_Q-BYOFbTka.js +0 -6
  52. package/dist/140_Q-BYOFbTka.js.map +0 -1
  53. package/dist/140_R-Bpf0qwjS.js +0 -6
  54. package/dist/140_R-Bpf0qwjS.js.map +0 -1
  55. package/dist/140_S-DgN1PKgi.js +0 -6
  56. package/dist/140_S-DgN1PKgi.js.map +0 -1
  57. package/dist/140_T-BBb0sue1.js +0 -6
  58. package/dist/140_T-BBb0sue1.js.map +0 -1
  59. package/dist/140_U-DpGlbFk5.js +0 -6
  60. package/dist/140_U-DpGlbFk5.js.map +0 -1
  61. package/dist/140_V-CoAf3jFC.js +0 -6
  62. package/dist/140_V-CoAf3jFC.js.map +0 -1
  63. package/dist/140_W-D2zLOs7z.js +0 -6
  64. package/dist/140_W-D2zLOs7z.js.map +0 -1
  65. package/dist/140_X-XGOqDUpP.js +0 -6
  66. package/dist/140_X-XGOqDUpP.js.map +0 -1
  67. package/dist/140_Y-BFe_xB7m.js +0 -6
  68. package/dist/140_Y-BFe_xB7m.js.map +0 -1
  69. package/dist/140_Z-CIa6xvYU.js +0 -6
  70. package/dist/140_Z-CIa6xvYU.js.map +0 -1
  71. package/dist/140_/344/272/221-kgdmbX-K.js +0 -6
  72. package/dist/140_/344/272/221-kgdmbX-K.js.map +0 -1
  73. package/dist/140_/344/272/254-C8KyFk2Z.js +0 -6
  74. package/dist/140_/344/272/254-C8KyFk2Z.js.map +0 -1
  75. package/dist/140_/344/275/277-DtqoHEFk.js +0 -6
  76. package/dist/140_/344/275/277-DtqoHEFk.js.map +0 -1
  77. package/dist/140_/345/206/200-C0v5IzOg.js +0 -6
  78. package/dist/140_/345/206/200-C0v5IzOg.js.map +0 -1
  79. package/dist/140_/345/220/211-DKiyMBdo.js +0 -6
  80. package/dist/140_/345/220/211-DKiyMBdo.js.map +0 -1
  81. package/dist/140_/345/255/246-DE_uqkJx.js +0 -6
  82. package/dist/140_/345/255/246-DE_uqkJx.js.map +0 -1
  83. package/dist/140_/345/256/201-BOWus8aO.js +0 -6
  84. package/dist/140_/345/256/201-BOWus8aO.js.map +0 -1
  85. package/dist/140_/345/267/235-D62FOQbo.js +0 -6
  86. package/dist/140_/345/267/235-D62FOQbo.js.map +0 -1
  87. package/dist/140_/346/214/202-BtmqLukI.js +0 -6
  88. package/dist/140_/346/214/202-BtmqLukI.js.map +0 -1
  89. package/dist/140_/346/226/260-CO8Y7gZS.js +0 -6
  90. package/dist/140_/346/226/260-CO8Y7gZS.js.map +0 -1
  91. package/dist/140_/346/231/213-c8Qu7FUY.js +0 -6
  92. package/dist/140_/346/231/213-c8Qu7FUY.js.map +0 -1
  93. package/dist/140_/346/241/202-CMPgmxCR.js +0 -6
  94. package/dist/140_/346/241/202-CMPgmxCR.js.map +0 -1
  95. package/dist/140_/346/262/252-DBux4eNb.js +0 -6
  96. package/dist/140_/346/262/252-DBux4eNb.js.map +0 -1
  97. package/dist/140_/346/264/245-DFSGUpVY.js +0 -6
  98. package/dist/140_/346/264/245-DFSGUpVY.js.map +0 -1
  99. package/dist/140_/346/265/231-DFu_rWY1.js +0 -6
  100. package/dist/140_/346/265/231-DFu_rWY1.js.map +0 -1
  101. package/dist/140_/346/270/235-DuxEwn1O.js +0 -6
  102. package/dist/140_/346/270/235-DuxEwn1O.js.map +0 -1
  103. package/dist/140_/346/270/257-CHojvW9O.js +0 -6
  104. package/dist/140_/346/270/257-CHojvW9O.js.map +0 -1
  105. package/dist/140_/346/271/230-Cdv-oyzI.js +0 -6
  106. package/dist/140_/346/271/230-Cdv-oyzI.js.map +0 -1
  107. package/dist/140_/346/276/263-DFRB-Yn2.js +0 -6
  108. package/dist/140_/346/276/263-DFRB-Yn2.js.map +0 -1
  109. package/dist/140_/347/220/274-CQm-WC1u.js +0 -6
  110. package/dist/140_/347/220/274-CQm-WC1u.js.map +0 -1
  111. package/dist/140_/347/224/230-BUkPIiZ8.js +0 -6
  112. package/dist/140_/347/224/230-BUkPIiZ8.js.map +0 -1
  113. package/dist/140_/347/232/226-9fopHcW7.js +0 -6
  114. package/dist/140_/347/232/226-9fopHcW7.js.map +0 -1
  115. package/dist/140_/347/262/244-2ns8bhVd.js +0 -6
  116. package/dist/140_/347/262/244-2ns8bhVd.js.map +0 -1
  117. package/dist/140_/350/213/217-EUfraRZi.js +0 -6
  118. package/dist/140_/350/213/217-EUfraRZi.js.map +0 -1
  119. package/dist/140_/350/222/231-CkJ-t9wg.js +0 -6
  120. package/dist/140_/350/222/231-CkJ-t9wg.js.map +0 -1
  121. package/dist/140_/350/227/217-Dq5D6Lv3.js +0 -6
  122. package/dist/140_/350/227/217-Dq5D6Lv3.js.map +0 -1
  123. package/dist/140_/350/255/246-H0oi8otX.js +0 -6
  124. package/dist/140_/350/255/246-H0oi8otX.js.map +0 -1
  125. package/dist/140_/350/261/253-DJWBm_In.js +0 -6
  126. package/dist/140_/350/261/253-DJWBm_In.js.map +0 -1
  127. package/dist/140_/350/264/265-BDGfR20s.js +0 -6
  128. package/dist/140_/350/264/265-BDGfR20s.js.map +0 -1
  129. package/dist/140_/350/265/243-COVrRPUN.js +0 -6
  130. package/dist/140_/350/265/243-COVrRPUN.js.map +0 -1
  131. package/dist/140_/350/276/275-BUN-YOpd.js +0 -6
  132. package/dist/140_/350/276/275-BUN-YOpd.js.map +0 -1
  133. package/dist/140_/351/204/202-Cal-CFv1.js +0 -6
  134. package/dist/140_/351/204/202-Cal-CFv1.js.map +0 -1
  135. package/dist/140_/351/227/275-CFO4mbFG.js +0 -6
  136. package/dist/140_/351/227/275-CFO4mbFG.js.map +0 -1
  137. package/dist/140_/351/231/225-9Q3bBxvG.js +0 -6
  138. package/dist/140_/351/231/225-9Q3bBxvG.js.map +0 -1
  139. package/dist/140_/351/235/222-DkZ2Y3hY.js +0 -6
  140. package/dist/140_/351/235/222-DkZ2Y3hY.js.map +0 -1
  141. package/dist/140_/351/242/206-Co-UB_h4.js +0 -6
  142. package/dist/140_/351/242/206-Co-UB_h4.js.map +0 -1
  143. package/dist/140_/351/262/201-CqP1XyHK.js +0 -6
  144. package/dist/140_/351/262/201-CqP1XyHK.js.map +0 -1
  145. package/dist/140_/351/273/221-CYdj5TYf.js +0 -6
  146. package/dist/140_/351/273/221-CYdj5TYf.js.map +0 -1
  147. package/dist/blue-DbOV5aNY.js +0 -6
  148. package/dist/blue-DbOV5aNY.js.map +0 -1
  149. package/dist/config/platesInfo.d.ts +0 -14
  150. package/dist/green-CxNHC5qT.js +0 -6
  151. package/dist/green-CxNHC5qT.js.map +0 -1
  152. package/dist/index.d.ts +0 -9
  153. package/dist/index.js +0 -255
  154. package/dist/index.js.map +0 -1
  155. package/dist/main.d.ts +0 -1
  156. package/dist/utils/imageProcess.d.ts +0 -23
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/config/platesInfo.ts","../src/utils/imageProcess.ts","../src/index.ts"],"sourcesContent":["interface PlateInfo {\r\n plateImage: string\r\n fontColor: string\r\n fonts: Array<{\r\n width: number\r\n height: number\r\n left: number\r\n top: number\r\n }> \r\n}\r\nexport type Colors = 'green' | 'blue'\r\ntype PlatesInfo = Record<Colors, PlateInfo>\r\n\r\nexport const platesInfo: PlatesInfo = {\r\n green: {\r\n plateImage: 'green',\r\n fontColor: '#000000',\r\n fonts: [\r\n {\r\n \"width\": 0.0929,\r\n \"height\": 0.6204,\r\n \"left\": 0.0328,\r\n \"top\": 0.1852\r\n },\r\n {\r\n \"width\": 0.0874,\r\n \"height\": 0.6296,\r\n \"left\": 0.1475,\r\n \"top\": 0.1852\r\n },\r\n {\r\n \"width\": 0.0902,\r\n \"height\": 0.6296,\r\n \"left\": 0.3361,\r\n \"top\": 0.1852\r\n },\r\n {\r\n \"width\": 0.0902,\r\n \"height\": 0.6296,\r\n \"left\": 0.4490,\r\n \"top\": 0.1852\r\n },\r\n {\r\n \"width\": 0.0874,\r\n \"height\": 0.6296,\r\n \"left\": 0.5519,\r\n \"top\": 0.1852\r\n },\r\n {\r\n \"width\": 0.0874,\r\n \"height\": 0.6296,\r\n \"left\": 0.6612,\r\n \"top\": 0.1852\r\n },\r\n {\r\n \"width\": 0.0902,\r\n \"height\": 0.6296,\r\n \"left\": 0.7678,\r\n \"top\": 0.1852\r\n },\r\n {\r\n \"width\": 0.0902,\r\n \"height\": 0.6296,\r\n \"left\": 0.8770,\r\n \"top\": 0.1852\r\n }\r\n ]\r\n },\r\n blue: {\r\n plateImage: 'blue',\r\n fontColor: '#ffffff',\r\n fonts: [\r\n {\r\n \"width\": 0.1042,\r\n \"height\": 0.7396,\r\n \"left\": 0.0357,\r\n \"top\": 0.1302\r\n },\r\n {\r\n \"width\": 0.1042,\r\n \"height\": 0.7396,\r\n \"left\": 0.1619,\r\n \"top\": 0.1302\r\n },\r\n {\r\n \"width\": 0.0893,\r\n \"height\": 0.7396,\r\n \"left\": 0.3461,\r\n \"top\": 0.1302\r\n },\r\n {\r\n \"width\": 0.1004,\r\n \"height\": 0.7396,\r\n \"left\": 0.4741,\r\n \"top\": 0.1302\r\n },\r\n {\r\n \"width\": 0.0938,\r\n \"height\": 0.7396,\r\n \"left\": 0.6139,\r\n \"top\": 0.1302\r\n },\r\n {\r\n \"width\": 0.0938,\r\n \"height\": 0.7396,\r\n \"left\": 0.7479,\r\n \"top\": 0.1302\r\n },\r\n {\r\n \"width\": 0.1004,\r\n \"height\": 0.7396,\r\n \"left\": 0.8818,\r\n \"top\": 0.1302\r\n }\r\n ]\r\n }\r\n}","export interface Rgb {\n r: number\n g: number\n b: number\n}\n\nexport interface KeyOptions {\n /** 亮度 <= solid 的像素完全不透明(字身) */\n solid?: number\n /** 亮度 >= clear 的像素完全透明(背景) */\n clear?: number\n}\n\n/**\n * 把「黑字白底」的原图转成「指定颜色 + 透明背景」,并保留原图边缘的灰度过渡。\n *\n * @param imageData getImageData() 的结果,原地修改\n * @param fontColor 目标字色\n */\nexport function keyBlackToAlpha(imageData: ImageData, fontColor: Rgb, options: KeyOptions = {}) {\n const { solid = 64, clear = 208 } = options\n const { r, g, b } = fontColor\n const data = imageData.data\n const span = clear - solid\n\n for (let i = 0; i < data.length; i += 4) {\n // 感知亮度:JPEG 压缩后的边缘噪点用亮度判断比逐通道阈值稳\n const lum = 0.299 * data[i] + 0.587 * data[i + 1] + 0.114 * data[i + 2]\n\n let coverage: number\n if (lum <= solid) {\n coverage = 1\n } else if (lum >= clear) {\n coverage = 0\n } else {\n coverage = (clear - lum) / span\n }\n\n // 所有像素(包括全透明的)都写成字色,\n // 缩放时插值不会从背景色里带出灰边或白边\n data[i] = r\n data[i + 1] = g\n data[i + 2] = b\n data[i + 3] = Math.round(coverage * data[i + 3])\n }\n}\n\nexport function hexToRgb(hex: string) {\n // 去掉 # 号\n let color = hex.replace('#', '');\n \n // 处理简写(如 #f00 → #ff0000)\n if (color.length === 3) {\n color = color.split('').map(c => c + c).join('');\n }\n \n // 位运算提取 RGB\n const num = parseInt(color, 16);\n const r = (num >> 16) & 255;\n const g = (num >> 8) & 255;\n const b = num & 255;\n \n return { r, g, b };\n}","import { platesInfo, type Colors } from './config/platesInfo'\r\nimport { keyBlackToAlpha, hexToRgb } from './utils/imageProcess'\r\n\r\nexport class PlateRenderer {\r\n element: HTMLElement\r\n plateColor: Colors\r\n plateNumber: String\r\n\r\n constructor(plateNumber: string, plateColor: Colors, el: string | HTMLElement) {\r\n let element: HTMLElement\r\n if (typeof el === 'string') {\r\n const _el = document.getElementById(el)\r\n if (!_el) {\r\n throw new Error(`Element with ID \"${el}\" not found in DOM`)\r\n }\r\n element = _el\r\n } else {\r\n element = el\r\n }\r\n\r\n this.plateColor = plateColor\r\n this.element = element\r\n this.plateNumber = plateNumber\r\n }\r\n\r\n static async create(plateNumber: string, plateColor: Colors, el: string | HTMLElement) {\r\n const plateRenderer = new PlateRenderer(plateNumber, plateColor, el)\r\n const element = plateRenderer.element\r\n const canvas = document.createElement('canvas')\r\n const canvasWidth = element.offsetWidth\r\n const canvasHeight = canvasWidth * 0.2915\r\n canvas.width = canvasWidth\r\n canvas.height = canvasHeight\r\n const ctx = canvas.getContext('2d')\r\n const img = new Image()\r\n const plateImageModule = await import(`./assets/plate/${plateColor}.png`)\r\n img.src = plateImageModule.default\r\n img.onload = function() {\r\n ctx?.drawImage(img, 0, 0, canvasWidth, canvasHeight)\r\n element.appendChild(canvas)\r\n }\r\n\r\n const plateInfo = platesInfo[plateColor]\r\n\r\n ;[...plateNumber].forEach(async (char, index) => {\r\n //单个字符信息\r\n const fontInfo = plateInfo.fonts[index]\r\n if (!fontInfo) return\r\n\r\n const img = new Image()\r\n const charModule = await import(`./assets/font/140_${char}.jpg`)\r\n img.src = charModule.default\r\n img.onload = () => {\r\n plateRenderer.extractFontToCanvas(img, canvas, plateInfo.fontColor, canvasWidth * fontInfo.width, canvasHeight * fontInfo.height, canvasWidth * fontInfo.left, canvasHeight * fontInfo.top)\r\n }\r\n })\r\n }\r\n\r\n extractFontToCanvas(img: HTMLImageElement, targetCanvas: HTMLCanvasElement, fontColor: string, width?: number, height?: number, x?: number, y?: number) {\r\n width = width || img.width\r\n height = height || img.height\r\n\r\n const tempCanvas = document.createElement('canvas');\r\n tempCanvas.width = img.naturalWidth || img.width;\r\n tempCanvas.height = img.naturalHeight || img.height;\r\n const tempCtx = tempCanvas.getContext('2d');\r\n if (!tempCtx) throw new Error('Canvas 2D context not supported')\r\n tempCtx.drawImage(img, 0, 0);\r\n\r\n // 黑字白底 → 字色 + 透明背景,灰边保留为半透明\r\n const imageData = tempCtx.getImageData(0, 0, tempCanvas.width, tempCanvas.height);\r\n keyBlackToAlpha(imageData, hexToRgb(fontColor));\r\n tempCtx.putImageData(imageData, 0, 0);\r\n\r\n const ctx = targetCanvas.getContext('2d');\r\n if (!ctx) throw new Error('Canvas 2D context not supported')\r\n ctx.imageSmoothingEnabled = true;\r\n ctx.imageSmoothingQuality = 'high';\r\n ctx.drawImage(tempCanvas, x || 0, y || 0, width, height);\r\n }\r\n}"],"mappings":"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"}
package/dist/main.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,23 +0,0 @@
1
- export interface Rgb {
2
- r: number;
3
- g: number;
4
- b: number;
5
- }
6
- export interface KeyOptions {
7
- /** 亮度 <= solid 的像素完全不透明(字身) */
8
- solid?: number;
9
- /** 亮度 >= clear 的像素完全透明(背景) */
10
- clear?: number;
11
- }
12
- /**
13
- * 把「黑字白底」的原图转成「指定颜色 + 透明背景」,并保留原图边缘的灰度过渡。
14
- *
15
- * @param imageData getImageData() 的结果,原地修改
16
- * @param fontColor 目标字色
17
- */
18
- export declare function keyBlackToAlpha(imageData: ImageData, fontColor: Rgb, options?: KeyOptions): void;
19
- export declare function hexToRgb(hex: string): {
20
- r: number;
21
- g: number;
22
- b: number;
23
- };