canvas.js
//获取应用实例
const app = getApp()
Page({
/**
- 页面的初始数据
*/
data: {
// canvas
_width: 0, //手机屏宽
_heigth: 0,//手机屏高
swiperHeight: 300,//主图图片高度
canvasType: false,//canvas是否显示
loadImagePath: ‘’,//下载的图片
imageUrl: ‘https://cos.myfaka.com/car/service/1.jpg’, //主图网络路径
codeUrl: ‘https://cos.myfaka.com/car/share/code.jpg’,//二维码网络路径
localImageUrl: ‘’, //绘制的商品图片本地路径
localCodeUrl: ‘’, //绘制的二维码图片本地路径
},
/**
- 生命周期函数–监听页面加载
*/
onLoad: function (options) {
},
/按生成图片按钮时/
creatQrcodePictures: function () {
wx.showLoading({
title: ‘正在绘制图片’,
})
/获取手机宽高/
let that = this
let imgHeigth = this.data.swiperHeight
let imgUrl = this.data.imageUrl
let qrcodeUrl = this.data.codeUrl
wx.getSystemInfo({
success(res) {
that.setData({
_width: res.windowWidth,
_heigth: res.windowHeight,
canvasType: true,
})
// 获取图片信息生成canvas
that.getImginfo([imgUrl, qrcodeUrl], 0);
}
})
},
// 获取图片信息
getImginfo: function (urlArr, _type) {
let that = this;
wx.getImageInfo({
src: urlArr[_type],
success: function (res) {
//res.path是网络图片的本地地址
if (_type === 0) { //商品图片
that.setData({
localImageUrl: res.path,
})
that.getImginfo(urlArr, 1)
} else {
that.setData({ //二维码
localCodeUrl: res.path,
})
// 创建canvas图片
that.createNewImg();
}
},
fail: function (res) {
//失败回调
console.log(‘Fail:’, _type, res)
}
});
},
//绘制canvas
createNewImg: function () {
let _width = this.data._width,
_heigth = this.data._heigth; //屏幕宽与高
let imgHeigth = this.data.swiperHeight, //原图片高度
scale = (_width - 40) / _width, //缩小比例
that = this;
let imgH = imgHeigth * scale; //绘制时图片显示高度
let ctx = wx.createCanvasContext(‘mycanvas’);
// 绘制背景
ctx.setFillStyle(“#fff”);
ctx.fillRect(0, 0, _width - 40, imgH + 160);
//绘制图片
ctx.drawImage(this.data.localImageUrl, 10, 10, _width - 60, imgH);
// 绘制标题
ctx.setFontSize(18);
ctx.setFillStyle(‘#333’);
let txtWidth = _width - 60 + 30 - 100 - 50; //文字的宽度
//商品名称
ctx.fillText(‘汽车服务:白金蜡’, 10, imgH + 40, txtWidth);
// 绘制价格单位 ‘¥’
ctx.setFontSize(14);
ctx.setFillStyle(‘#d2aa68’);
ctx.fillText(‘¥’, 10, imgH + 65, txtWidth);
// 绘制价格
ctx.setFontSize(18);
ctx.fillText(‘90元/次’, 26, imgH + 65, txtWidth);
// 绘制小程序名称
ctx.setFontSize(20);
ctx.setFillStyle(‘red’);
ctx.fillText(‘武鸣爱车’, 10, imgH + 105, txtWidth);
// 绘制提示信息
ctx.setFontSize(14);
ctx.setFillStyle(‘#999’);
ctx.fillText(‘微信小程序 • 长按识别’, 10, imgH + 125, txtWidth);
// 绘制二维码
ctx.drawImage(this.data.localCodeUrl, _width - 80 + 80 - 150, imgH + 20, 100, 100);
// 显示绘制
ctx.draw();
//将生成好的图片保存到本地,需要延迟一会,绘制期间耗时
setTimeout(function () {
wx.canvasToTempFilePath({
canvasId: ‘mycanvas’,
success: function (res) {
var tempFilePath = res.tempFilePath;
that.setData({
loadImagePath: tempFilePath,
});
},
fail: function (res) {
console.log(res);
}
});
}, 500);
//关闭提示
wx.hideLoading();
},
//点击保存到相册
saveImg: function () {
//调用wxapi.js里集成的接口
app.globalData.wxapi.saveImgToLocal(this.data.loadImagePath);
},
// 关闭弹窗
onClickOverlay: function () {
this.setData({
canvasType: false
});
},
})
wxapi.js
/*
- 保存图片到相册
*/
function saveImgToLocal(imagePath, msg) {
//判断用户是否授权"保存到相册"
wx.getSetting({
success(res) {
if (res.authSetting[‘scope.writePhotosAlbum’]) {
savePhoto(imagePath, msg);
} else if (res.authSetting[‘scope.writePhotosAlbum’] === undefined) {
wx.authorize({
scope: ‘scope.writePhotosAlbum’,
success() {
savePhoto(imagePath, msg);
},
fail() {
wx.showModal({
title: ‘您没有授权,无法保存到相册’,
confirmText: “知道了”,
showCancel: false,
success: function (res) {
if (res.confirm) {
} else if (res.cancel) {
}
}
})
}
})
} else {
wx.openSetting({
success(res) {
if (res.authSetting[‘scope.writePhotosAlbum’]) {
savePhoto(imagePath, msg);
} else {
wx.showModal({
title: ‘您没有授权,无法保存到相册’,
confirmText: “知道了”,
showCancel: false,
success: function (res) {
if (res.confirm) {
} else if (res.cancel) {
}
}
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
22)]
[外链图片转存中…(img-ORm2R0Nc-1715907823723)]
[外链图片转存中…(img-MpIaLNgo-1715907823724)]
[外链图片转存中…(img-njGGqZqe-1715907823725)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!