A Node.js library to create retro game console style covers from images.
npm install node-romcoverUna librería de Node.js para crear carátulas de juegos retro.
Esta librería genera carátulas de juegos que imitan el estilo de varias consolas clásicas. Toma una imagen, la recorta según el aspect ratio de la caja original y le añade una franja lateral con el logo de la consola.
- gameboy - Game Boy
- nes - Nintendo Entertainment System
- snes - Super Nintendo Entertainment System
- n64 - Nintendo 64
- gamecube - GameCube
- ps1 - PlayStation 1
``bash`
npm install node-romcover
`javascript
const { createCover } = require('node-romcover');
const fs = require('fs');
async function generateCover() {
try {
// Generar una carátula de Game Boy
const buffer = await createCover('gameboy', './mi-imagen.jpg');
// Guardar la carátula generada
fs.writeFileSync('caratula-gameboy.png', buffer);
console.log('¡Carátula creada!');
} catch (error) {
console.error('Error:', error.message);
}
}
generateCover();
`
Genera una carátula de juego en el estilo de la consola especificada.
Parámetros:
- consoleType (string): El tipo de consola. Valores válidos: 'gameboy', 'nes', 'snes', 'n64', 'gamecube', 'ps1'imagePath
- (string): La ruta al archivo de imagen que se usará como base
Retorna:
- Promise: Un buffer con la imagen PNG generada
Ejemplo:
`javascript`
const buffer = await createCover('n64', './cover-art.jpg');
Un array con todas las consolas soportadas.
Ejemplo:
`javascript`
const { supportedConsoles } = require('node-romcover');
console.log(supportedConsoles); // ['gameboy', 'nes', 'snes', 'n64', 'gamecube', 'ps1']
Un objeto con la configuración de cada consola (logos, aspect ratios, etc.).
Ejemplo:
`javascript`
const { consoleConfigs } = require('node-romcover');
console.log(consoleConfigs.gameboy);
// { logo: 'gameboy-logo.png', cropAspectRatio: 1, logoWidth: 80, placement: 'side' }
`javascript
const { createCover, supportedConsoles } = require('node-romcover');
const fs = require('fs');
async function generateAllCovers(imagePath) {
for (const console of supportedConsoles) {
const buffer = await createCover(console, imagePath);
fs.writeFileSync(cover-${console}.png, buffer);Carátula de ${console} creada
console.log();
}
}
generateAllCovers('./my-game-art.jpg');
`
La librería acepta cualquier formato de imagen soportado por el paquete canvas de Node.js (JPEG, PNG, etc.).
`javascript
const { createCover } = require('node-romcover');
const fs = require('fs');
// Funciona con JPG
const jpgBuffer = await createCover('snes', './game.jpg');
fs.writeFileSync('cover-snes.png', jpgBuffer);
// También funciona con PNG
const pngBuffer = await createCover('nes', './game.png');
fs.writeFileSync('cover-nes.png', pngBuffer);
`
El repositorio incluye ejemplos adicionales en la carpeta examples/:
`bash`
npm run example:basic -- ./tu-imagen.jpg gameboy
Si deseas usar la librería como una API web, hay un servidor de Express de ejemplo:
`bash`
npm run example:api
Luego puedes hacer peticiones POST:
`bash`
curl -X POST \
http://localhost:3000/api/create/nes \
-F "gameImage=@mi-juego.jpg" \
--output caratula-nes.png
`bash`
git clone
cd RomCoverApi
npm install
`bash`
npm test
`bash`
npm run lint
npm run lint:fix
- Node.js >= 14
- La librería canvas` requiere dependencias nativas. Consulta la documentación de node-canvas para más información sobre la instalación en tu sistema operativo.
MIT
Las contribuciones son bienvenidas. Por favor, abre un issue o un pull request.