ImageLoader.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { XHRLoader } from './XHRLoader';
  2. import { DefaultLoadingManager } from './LoadingManager';
  3. /**
  4. * @author mrdoob / http://mrdoob.com/
  5. */
  6. function ImageLoader( manager ) {
  7. this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
  8. };
  9. Object.assign( ImageLoader.prototype, {
  10. load: function ( url, onLoad, onProgress, onError ) {
  11. var scope = this;
  12. var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );
  13. image.onload = function () {
  14. URL.revokeObjectURL( image.src );
  15. if ( onLoad ) onLoad( image );
  16. scope.manager.itemEnd( url );
  17. };
  18. if ( url.indexOf( 'data:' ) === 0 ) {
  19. image.src = url;
  20. } else {
  21. var loader = new XHRLoader();
  22. loader.setPath( this.path );
  23. loader.setResponseType( 'blob' );
  24. loader.setWithCredentials( this.withCredentials );
  25. loader.load( url, function ( blob ) {
  26. image.src = URL.createObjectURL( blob );
  27. }, onProgress, onError );
  28. }
  29. scope.manager.itemStart( url );
  30. return image;
  31. },
  32. setCrossOrigin: function ( value ) {
  33. this.crossOrigin = value;
  34. return this;
  35. },
  36. setWithCredentials: function ( value ) {
  37. this.withCredentials = value;
  38. return this;
  39. },
  40. setPath: function ( value ) {
  41. this.path = value;
  42. return this;
  43. }
  44. } );
  45. export { ImageLoader };
粤ICP备19079148号