pw-guild-icon-parser
Version:
Parser for Perfect World guild icon lists - converts PNG icons to DDS atlas format with DXT5 compression
29 lines • 1.08 kB
JavaScript
import sharp from 'sharp';
export async function validateAndConvertPNG(pngPath) {
const image = sharp(pngPath);
const metadata = await image.metadata();
if (!metadata.width || !metadata.height) {
throw new Error('Failed to read image dimensions');
}
if (metadata.width !== 16 || metadata.height !== 16) {
throw new Error(`Image must be exactly 16x16 pixels, got ${metadata.width}x${metadata.height}`);
}
if (metadata.format !== 'png') {
throw new Error(`Image must be PNG format, got ${metadata.format}`);
}
// Extract RGBA data (ensureAlpha adds alpha channel if missing)
const rawData = await image
.ensureAlpha()
.raw()
.toBuffer({ resolveWithObject: true });
// Verify we got RGBA (4 channels)
if (rawData.info.channels !== 4) {
throw new Error(`Expected RGBA image (4 channels), got ${rawData.info.channels} channels`);
}
return {
width: metadata.width,
height: metadata.height,
data: rawData.data
};
}
//# sourceMappingURL=converter.js.map