| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- Page({
- data: {
- src: './test-photo.png',
- cw: 0,
- ch: 0,
- },
- test() {
- wx.getImageInfo({
- src: this.data.src,
- success: e => {
- console.log(e)
- let ch = e.height * 2
- let cw = e.width * 2
- this.setData({
- ch,
- cw
- })
- const query = wx.createSelectorQuery();
- query.select('#myCanvas').node().exec((res) => {
- const canvas = res[0].node;
- const ctx = canvas.getContext('2d');
- const img = canvas.createImage();
- let h = ch / 2
- let w = cw / 2
- canvas.height = h * 0.85
- canvas.width = w * 0.9
- img.src = this.data.src
- img.onload = () => {
- ctx.drawImage(img, -w * 0.05, -h * 0.05);
- }
- })
- }
- })
- },
- async saveImg() {
- const query = wx.createSelectorQuery();
- const canvas = await new Promise((resolve, reject) => {
- query.select('#myCanvas')
- .fields({
- node: true,
- size: true
- })
- .exec(async (res) => {
- resolve(res[0].node);
- })
- });
- wx.canvasToTempFilePath({
- canvas,
- success: (res) => {
- wx.saveImageToPhotosAlbum({
- filePath: res.tempFilePath,
- success: function (data) {
- wx.showToast({
- title: '已保存到相册',
- icon: 'success',
- duration: 2000
- })
- },
- fail: function (err) {
- if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg === "saveImageToPhotosAlbum:fail authorize no response") {
- wx.showModal({
- title: '提示',
- content: '需要您授权保存相册',
- showCancel: false,
- success: modalSuccess => {
- wx.openSetting({
- success(settingdata) {
- if (settingdata.authSetting['scope.writePhotosAlbum']) {
- // wx.showModal({
- // title: '提示',
- // content: '获取权限成功,再次点击图片即可保存',
- // showCancel: false,
- // })
- } else {
- wx.showModal({
- title: '提示',
- content: '获取权限失败',
- showCancel: false,
- })
- }
- },
- fail(failData) {
- console.log("failData", failData)
- },
- complete(finishData) {
- console.log("finishData", finishData)
- }
- })
- }
- })
- } else {
- wx.showToast({
- title: '请保存图片',
- icon: 'none',
- duration: 2000
- })
- }
- },
- })
- },
- fail(res) {
- console.log('fail');
- }
- }, this)
- },
- onLoad(options) {
- this.setData({
- src: options.src
- })
- this.test()
- }
- })
|