image.js 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import Taro from '@tarojs/taro'
  2. import { authorize } from './wxAuth'
  3. // eslint-disable-next-line no-undef
  4. const host = HOST;
  5. // eslint-disable-next-line no-undef
  6. const ossPath = OSS_PATH;
  7. let platform = null;
  8. function getPlatform() {
  9. if (!platform) {
  10. platform = Taro.getSystemInfoSync().platform;
  11. }
  12. return platform;
  13. }
  14. export function getImgURL(img) {
  15. if (!img) return undefined;
  16. if (img.indexOf(ossPath) > -1) {
  17. const plat = getPlatform();
  18. if (plat.toLocaleLowerCase().indexOf('ios') > -1) {
  19. return `${img}?x-oss-process=style/thumb`
  20. } else {
  21. return `${img}?x-oss-process=style/webp`
  22. }
  23. }
  24. if (img.indexOf('http') === 0) return img;
  25. return `${host}${img}`;
  26. }
  27. /**
  28. * base64 转文件
  29. * @param {*} base64Str
  30. * @returns
  31. */
  32. export function base64ToFile(base64Str) {
  33. return new Promise((resolve, reject) => {
  34. const fileName = (new Date()).valueOf() + '-' + Math.random().toString(36).substring(2) + '.png'
  35. const filePath = Taro.env.USER_DATA_PATH + '/' + fileName
  36. Taro.getFileSystemManager().writeFile({
  37. filePath,
  38. data: base64Str,
  39. encoding: 'base64',
  40. success: () => {
  41. resolve(filePath)
  42. },
  43. fail: (err) => {
  44. console.error(err)
  45. reject(err)
  46. },
  47. complete: (res) => {
  48. console.log('-----writeFile---', filePath, res)
  49. }
  50. })
  51. })
  52. }
  53. /**
  54. * 保存到相册
  55. * @param {*} tempPath
  56. * @returns
  57. */
  58. export function save2Album(tempPath) {
  59. return new Promise((resolve, reject) => {
  60. authorize('scope.writePhotosAlbum').then(() => {
  61. console.log('-----------save2Album---------->', tempPath)
  62. // 再保存到相册
  63. Taro.saveImageToPhotosAlbum({
  64. filePath: tempPath,
  65. success: () => {
  66. resolve()
  67. },
  68. fail: (err) => {
  69. console.error(err)
  70. let message = err.errMsg || err.message || err
  71. if (message.indexOf('cancel') > -1) {
  72. message = '您已取消'
  73. }
  74. Taro.showToast({
  75. title: message,
  76. icon: 'none',
  77. })
  78. reject(err)
  79. },
  80. complete: (res) => {
  81. console.log('---------complete----------->', res)
  82. }
  83. })
  84. }).catch((err) => {
  85. console.error(err)
  86. let message = err.errMsg || err.message || err
  87. if (message.indexOf('cancel') > -1) {
  88. message = '您已取消'
  89. }
  90. Taro.showToast({
  91. title: message,
  92. icon: 'none',
  93. })
  94. reject(err)
  95. })
  96. })
  97. }