由于在quake3和doom3中使用了大量的TGA格式的图片作为贴图。
而HTML中只能使用PNG/JPG/GIF这几个中图片格式。
因此我们需要遍历quake3或doom3资源中所有TGA格式的图片,将其转换成HTML支持的图片格式。
接下来使用tga2png来实现批量图片格式转换,具体代码如下所示:
let tga2png = require( 'tga2png' );
let fs = require( "fs" );
let path = require( "path" );
// path为输入参数,表示要递归遍历所有子文件(夹)的路径
// paths为输出参数,输出所有生成后的图片文件名
function readTgaAndWritePngSync ( path, paths )
{
var pa = fs.readdirSync( path );
pa.forEach( function ( ele, index )
{
let info = fs.statSync( path + "/" + ele )
if ( info.isDirectory() )
{
readDirSync( path + "/" + ele, paths );
} else
{
let tga = path + "/" + ele;
let idx = tga.indexOf( ".tga" );
if ( idx !== -1 )
{
let png = tga.substring( 0, idx ) + ".png";
paths.push( png );
tga2png( tga, png );
}
}
} );
}
// 进行文件格式转换
/*
let paths = [];
readTgaAndWritePngSync( "./data/textures", paths );
console.log( paths )
*/