NodeJS: Как создать RGBA PNG или TGA в Javascript / PNGJS - PullRequest
0 голосов
/ 29 мая 2020

Я заполняю 'imageData', применяю его к холсту, а затем мне нужно сохранить его как 16- или 32-битное изображение RGBA из Javascript.

// 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);

Но в результате получается изображение PNG в формате RGB без альфа-канала. Я попытался использовать 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));

Но это делает только черное изображение, в котором снова отсутствует альфа-канал. Как я могу сохранить изображение RGBA PNG или TGA из Javascript?

...