UNPKG

png-to-rgba

Version:

53 lines (52 loc) 1.71 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; exports.__esModule = true; var pngjs_1 = require("pngjs"); function PNGToRGBAArray(data) { var png = pngjs_1.PNG.sync.read(data); var width = png.width; var height = png.height; var pixels = png.data; var rgba = []; for (var i = 0; i < height; i++) { rgba[i] = []; for (var j = 0; j < width; j++) { var index = (i * width + j) * 4; rgba[i][j] = [pixels[index], pixels[index + 1], pixels[index + 2], pixels[index + 3]]; } } return { rgba: rgba, width: width, height: height, png: png }; } function RGBAArrayToPNG(arr, opt) { if (opt === void 0) { opt = {}; } var png = new pngjs_1.PNG(__assign(__assign({ colorType: 6, inputHasAlpha: true }, opt), { width: arr[0].length, height: arr.length })); for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr[i].length; j++) { var index = (i * arr[i].length + j) * 4; png.data[index] = arr[i][j][0]; png.data[index + 1] = arr[i][j][1]; png.data[index + 2] = arr[i][j][2]; png.data[index + 3] = arr[i][j][3]; } } return pngjs_1.PNG.sync.write(png); } exports["default"] = { PNGToRGBAArray: PNGToRGBAArray, RGBAArrayToPNG: RGBAArrayToPNG };