UNPKG

compress-picture-js

Version:
40 lines (33 loc) 1.22 kB
import { IOptions } from '../../util/option/option.util.js'; import { IResponse, responseUtil } from '../../util/response/response.util.js'; import { CreateDirSyncFromFilename, ReadFileSync, WriteFileSync, } from '../../util/file/file.util.js'; import pnglib from 'upng-js'; // CompressPNG 压缩PNG export function CompressPNG(options: IOptions): IResponse { let resp = responseUtil.DefaultIResponse(); // console.log("🚀", options); // 图片 const imgBuffer = ReadFileSync(options['input']); const img = pnglib.decode(imgBuffer); const rgba: ArrayBuffer[] = pnglib.toRGBA8(img); // 压缩比例:cnum = Or just use 0 for lossless / 256 for lossy. const compressQuality = pngCompressQuality(options['quality']); // console.log("🚀", compressQuality) const pngImg = pnglib.encode(rgba, img.width, img.height, compressQuality); // 检查输出文件夹 CreateDirSyncFromFilename(options['output']); // 写文件 WriteFileSync(options['output'], pngImg); return resp; } // pngCompressQuality png压缩质量 function pngCompressQuality(quality: number): number { if (quality < 0 || quality >= 100) { return 0; } return Math.ceil((256 * (100 - quality)) / 100); }