初始化蓝鸟文件快递柜源码与部署文档
This commit is contained in:
commit
5643d22242
70 files changed
+18669
No files matched your search
@@ -0,0 +1,15 @@
|
||||
import { chromium } from '../web/node_modules/playwright/index.mjs'
|
||||
import { readFileSync, writeFileSync } from 'node:fs'
|
||||
const svg=readFileSync('web/public/favicon.svg','utf8')
|
||||
const browser=await chromium.launch({headless:true})
|
||||
try {
|
||||
const page=await browser.newPage();await page.setContent('<canvas id="icon"></canvas>')
|
||||
const images=[]
|
||||
for(const size of [16,32,48,180,192,512]){
|
||||
const data=await page.evaluate(async({svg,size})=>{const canvas=document.querySelector('canvas');canvas.width=size;canvas.height=size;const image=new Image();image.src='data:image/svg+xml;base64,'+btoa(unescape(encodeURIComponent(svg)));await image.decode();canvas.getContext('2d').drawImage(image,0,0,size,size);return canvas.toDataURL('image/png').split(',')[1]},{svg,size})
|
||||
const bytes=Buffer.from(data,'base64');if(size<=48)images.push({size,bytes});if(size===180)writeFileSync('web/public/apple-touch-icon.png',bytes);if(size===192||size===512)writeFileSync(`web/public/icon-${size}.png`,bytes)
|
||||
}
|
||||
const header=Buffer.alloc(6+16*images.length);header.writeUInt16LE(1,2);header.writeUInt16LE(images.length,4);let offset=header.length
|
||||
images.forEach(({size,bytes},i)=>{const index=6+16*i;header[index]=size;header[index+1]=size;header.writeUInt16LE(1,index+4);header.writeUInt16LE(32,index+6);header.writeUInt32LE(bytes.length,index+8);header.writeUInt32LE(offset,index+12);offset+=bytes.length})
|
||||
writeFileSync('web/public/favicon.ico',Buffer.concat([header,...images.map(image=>image.bytes)]))
|
||||
} finally{await browser.close()}
|
||||
Reference in new issue
Block a user