由于在quake3和doom3中使用了大量的TGA格式的图片作为贴图。

而HTML中只能使用PNG/JPG/GIF这几个中图片格式。

因此我们需要遍历quake3或doom3资源中所有TGA格式的图片,将其转换成HTML支持的图片格式。

我们可以访问:https://github.com/steel1990/tga2png 获得TGA转PNG相关程序(纯Node.js版模块)。

接下来使用tga2png来实现批量图片格式转换,具体代码如下所示:

  1. let tga2png = require( 'tga2png' );
  2. let fs = require( "fs" );
  3. let path = require( "path" );
  4. // path为输入参数,表示要递归遍历所有子文件(夹)的路径
  5. // paths为输出参数,输出所有生成后的图片文件名
  6. function readTgaAndWritePngSync ( path, paths )
  7. {
  8. var pa = fs.readdirSync( path );
  9. pa.forEach( function ( ele, index )
  10. {
  11. let info = fs.statSync( path + "/" + ele )
  12. if ( info.isDirectory() )
  13. {
  14. readDirSync( path + "/" + ele, paths );
  15. } else
  16. {
  17. let tga = path + "/" + ele;
  18. let idx = tga.indexOf( ".tga" );
  19. if ( idx !== -1 )
  20. {
  21. let png = tga.substring( 0, idx ) + ".png";
  22. paths.push( png );
  23. tga2png( tga, png );
  24. }
  25. }
  26. } );
  27. }
  28. // 进行文件格式转换
  29. /*
  30. let paths = [];
  31. readTgaAndWritePngSync( "./data/textures", paths );
  32. console.log( paths )
  33. */