avatar.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import Taro from "@tarojs/taro";
  2. import { uploadImage } from "@/utils/http";
  3. import { EUploadFileScene } from "@/consts/enum";
  4. const MAX_IMAGE_SIZE = 10;
  5. export const getNewAvatarPic = (cb: (result: string)=> void)=> {
  6. Taro.chooseMedia({
  7. count: 1,
  8. mediaType: ["image"],
  9. sourceType: ["album", "camera"],
  10. async success(r) {
  11. const tempFile = r.tempFiles[0];
  12. if (MAX_IMAGE_SIZE && tempFile.size > MAX_IMAGE_SIZE * 1024 * 1024) {
  13. Taro.showToast({
  14. title: `文件不能超过${MAX_IMAGE_SIZE}MB`,
  15. icon: "none",
  16. });
  17. return;
  18. }
  19. Taro.cropImage({
  20. src: tempFile.tempFilePath,
  21. cropScale: "9:16",
  22. success: async (cropRes) => {
  23. const path = cropRes.tempFilePath;
  24. Taro.showLoading();
  25. const response = await uploadImage(path, EUploadFileScene.AVATAR);
  26. Taro.hideLoading();
  27. if (response?.publicUrl) {
  28. cb(response?.publicUrl)
  29. }
  30. },
  31. });
  32. },
  33. });
  34. }
  35. // 上传新形象,成功后跳转至 ai 生成页
  36. export const uploadAndNavToGenNewAvatar = () => {
  37. getNewAvatarPic((picUrl)=> {
  38. Taro.navigateTo({
  39. url: `/pages/agent-gen/index?avatarUrl=${picUrl}`,
  40. });
  41. })
  42. };