Files
doodle-mini/miniprogram/utils/saveImage.ts
T

66 lines
2.0 KiB
TypeScript

import { A4_EXPORT_SIZE_150DPI } from '../constants/colors';
/**
* 导出为固定打印分辨率(A4 150 DPI),避免高 DPR 设备导出过大图导致打印慢、文件大
*/
const doSaveImage = (canvas: Canvas) => {
const { width: destWidth, height: destHeight } = A4_EXPORT_SIZE_150DPI;
wx.canvasToTempFilePath({
canvas,
fileType: 'jpg',
quality: 0.9,
destWidth,
destHeight,
success: (res) => {
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
// 下载成功提示(下载次数记录在 downloadPrint.ts 中处理)
wx.showToast({
title: '保存成功,请在相册中查看',
icon: 'success',
duration: 2000,
});
},
// fail: () => wx.showToast({
// title: '保存涂色卡失败,请重试!',
// icon: 'none',
// duration: 2000,
// })
});
},
fail: () => {
wx.showToast({
title: '生成涂色卡失败,请重试!',
icon: 'none',
duration: 2000,
});
},
});
};
const requestPhotoPermission = (canvas: Canvas) => {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success: () => doSaveImage(canvas),
fail: () =>
wx.showToast({
title: '请在“设置-添加到相册”中开启相册权限以保存涂色卡',
icon: 'none',
duration: 3000,
}),
});
};
export const checkAndSaveImage = (canvas: Canvas) => {
wx.getSetting({
success: (res) => {
if (!res.authSetting['scope.writePhotosAlbum']) {
requestPhotoPermission(canvas);
} else {
doSaveImage(canvas);
}
},
});
};