如何使用PNGJS SYNC将像素数组转换为PNG图片?
解决PNGJS同步实现像素数组转PNG的问题
你之前用PNG.sync.read的方式不对,这个方法是用来读取/解析已有PNG数据的,不是用来初始化新的空白PNG对象的。
正确的同步实现方式应该是先正常创建PNG实例,配置好宽高、滤镜等参数,赋值像素数据后,用PNG.sync.write()把实例转换成Buffer,最后用同步文件写入方法保存即可:
const PNG = require('pngjs').PNG; const fs = require('fs'); // 初始化配置好参数的PNG实例 const png = new PNG({ width: 2048, height: 2048, filterType: 4, }); // 为实例赋值像素数组(确保mydata是符合RGBA格式的Uint8Array/Buffer,总长度为width*height*4) png.data = mydata; // 同步生成PNG文件Buffer并写入本地 const pngBuffer = PNG.sync.write(png); fs.writeFileSync('image.png', pngBuffer);
关键说明
PNG.sync.write()会同步处理PNG实例,直接生成包含完整PNG文件数据的Buffer,完全替代了流式的pack()方法。- 要保证
mydata的格式符合PNG要求:每个像素由R、G、B、A四个字节依次组成,数组总长度必须等于width * height * 4。
内容的提问来源于stack exchange,提问作者MrCano369x
相关产品推荐
相关产品推荐

