0

我正在填充“imageData”,将其应用于画布,然后需要将其保存为来自 Javascript 的 RGBA 16 或 32 位图像。

// Set all the alpha values to max.
for (let i = 0; i < 64 * 64; i++){
    imageData.data[(i * 4) + 3] = 255;
}
ctx.putImageData(imageData, 0, 0);

我可以将其保存为这样的 PNG 图像:

const buf = await BufferWrapper.fromCanvas(canvasFull, 'image/png');
await buf.writeToFile(tilePath);

但结果是缺少 Alpha 通道的 RGB png 图像。我尝试使用https://www.npmjs.com/package/pngjs来保存图像:

var png = new PNG({ width: 1024, height: 1024, filterType: 4 }).parse(canvasFull.imageData, function (error, data) {
    console.log(error, data);
});
png.pack().pipe(fs.createWriteStream(tilePath));

但这只会产生黑色图像,它再次缺少 Alpha 通道。如何从 Javascript 保存 RGBA PNG 或 TGA 图像?

4

0 回答 0