png-to-rgba
Version:
53 lines (52 loc) • 1.71 kB
JavaScript
;
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
};