TIFFLoader.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {
  2. DataTextureLoader,
  3. LinearFilter,
  4. LinearMipmapLinearFilter
  5. } from 'three';
  6. import UTIF from '../libs/utif.module.js';
  7. /**
  8. * A loader for the TIFF texture format.
  9. *
  10. * ```js
  11. * const loader = new TIFFLoader();
  12. * const texture = await loader.loadAsync( 'textures/tiff/crate_lzw.tif' );
  13. * texture.colorSpace = THREE.SRGBColorSpace;
  14. * ```
  15. *
  16. * @augments DataTextureLoader
  17. */
  18. class TIFFLoader extends DataTextureLoader {
  19. /**
  20. * Constructs a new TIFF loader.
  21. *
  22. * @param {LoadingManager} [manager] - The loading manager.
  23. */
  24. constructor( manager ) {
  25. super( manager );
  26. }
  27. /**
  28. * Parses the given TIFF texture data.
  29. *
  30. * @param {ArrayBuffer} buffer - The raw texture data.
  31. * @return {DataTextureLoader~TexData} An object representing the parsed texture data.
  32. */
  33. parse( buffer ) {
  34. const ifds = UTIF.decode( buffer );
  35. UTIF.decodeImage( buffer, ifds[ 0 ] );
  36. const rgba = UTIF.toRGBA8( ifds[ 0 ] );
  37. return {
  38. width: ifds[ 0 ].width,
  39. height: ifds[ 0 ].height,
  40. data: rgba,
  41. flipY: true,
  42. magFilter: LinearFilter,
  43. minFilter: LinearMipmapLinearFilter
  44. };
  45. }
  46. }
  47. export { TIFFLoader };
粤ICP备19079148号