index.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // @ts-nocheck
  2. // #ifdef APP-PLUS
  3. import {getLocalFilePath} from '../getLocalFilePath'
  4. // #endif
  5. /**
  6. * 路径转base64
  7. * @param {Object} string
  8. */
  9. export function pathToBase64(path: string):Promise<string> {
  10. if (/^data:/.test(path)) return path
  11. return new Promise((resolve, reject) => {
  12. // #ifdef H5
  13. let image = new Image();
  14. image.setAttribute("crossOrigin", 'Anonymous');
  15. image.onload = function() {
  16. let canvas = document.createElement('canvas');
  17. canvas.width = this.naturalWidth;
  18. canvas.height = this.naturalHeight;
  19. canvas.getContext('2d').drawImage(image, 0, 0);
  20. let result = canvas.toDataURL('image/png')
  21. resolve(result);
  22. canvas.height = canvas.width = 0
  23. }
  24. image.src = path + '?v=' + Math.random()
  25. image.onerror = (error) => {
  26. reject(error);
  27. };
  28. // #endif
  29. // #ifdef MP
  30. if (uni.canIUse('getFileSystemManager')) {
  31. uni.getFileSystemManager().readFile({
  32. filePath: path,
  33. encoding: 'base64',
  34. success: (res) => {
  35. resolve('data:image/png;base64,' + res.data)
  36. },
  37. fail: (error) => {
  38. console.error({error, path})
  39. reject(error)
  40. }
  41. })
  42. }
  43. // #endif
  44. // #ifdef APP-PLUS
  45. plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), (entry) => {
  46. entry.file((file: any) => {
  47. const fileReader = new plus.io.FileReader()
  48. fileReader.onload = (data) => {
  49. resolve(data.target.result)
  50. }
  51. fileReader.onerror = (error) => {
  52. console.error({error, path})
  53. reject(error)
  54. }
  55. fileReader.readAsDataURL(file)
  56. }, reject)
  57. }, reject)
  58. // #endif
  59. })
  60. }