您的位置:首页 > 财经 > 金融 > 搜索引擎营销方法有哪些_免费上网的wifi软件_天津优化公司_百度竞价推广开户费用

搜索引擎营销方法有哪些_免费上网的wifi软件_天津优化公司_百度竞价推广开户费用

2024/11/17 15:24:50 来源:https://blog.csdn.net/qq_38468358/article/details/143091873  浏览:    关键词:搜索引擎营销方法有哪些_免费上网的wifi软件_天津优化公司_百度竞价推广开户费用
搜索引擎营销方法有哪些_免费上网的wifi软件_天津优化公司_百度竞价推广开户费用

微信小程序使用wx.chooseMedia拍摄或从手机相册中选择图片并添加水印,

代码如下:

// WXML代码:<canvas canvas-id="watermarkCanvas" style="width: {{canvasWidth}}px; height: {{canvasHeight}}px;"></canvas>
<button bindtap="addWatermark">选择图片并添加水印</button>// js代码:data: {canvasWidth: 0,canvasHeight: 0},addWatermark() {// 是否清空页面上的视觉效果this.setData({canvasWidth: 0,canvasHeight: 0});wx.chooseMedia({count: 1,mediaType: ['image'],sourceType: ['album', 'camera'],success: (res) => {const tempFilePath = res.tempFiles[0].tempFilePath;wx.getImageInfo({src: tempFilePath,success: (imageInfo) => {// 获取屏幕宽度const systemInfo = wx.getSystemInfoSync();const screenWidth = systemInfo.screenWidth;        // 计算图片在canvas中的大小,保持原始宽高比const scale = screenWidth / imageInfo.width;const canvasWidth = screenWidth;const canvasHeight = imageInfo.height * scale;// 更新 canvas 尺寸this.setData({canvasWidth: canvasWidth,canvasHeight: canvasHeight}, () => {// 在 setData 回调中创建 canvas 上下文,确保尺寸已更新const ctx = wx.createCanvasContext('watermarkCanvas');// 清空 canvasctx.clearRect(0, 0, canvasWidth, canvasHeight);          // 绘制原图,铺满整个canvasctx.drawImage(tempFilePath, 0, 0, canvasWidth, canvasHeight);              // 设置水印样式ctx.setFontSize(16);  // 固定字体大小为16pxctx.setFillStyle('rgba(255, 255, 255, 0.5)');ctx.setShadow(2, 2, 2, 'rgba(0, 0, 0, 0.5)');ctx.rotate(-Math.PI / 6);// 添加水印文字const watermarkText = '我的水印';const textWidth = ctx.measureText(watermarkText).width;const xGap = textWidth * 2;  // 增加横向间距const yGap = 48;  // 增加纵向间距// 确保水印覆盖整个canvas,包括旋转后的边角const diagonal = Math.sqrt(canvasWidth * canvasWidth + canvasHeight * canvasHeight);for (let y = -diagonal; y < diagonal * 2; y += yGap) {const rowOffset = ((y / yGap) % 2) * (xGap / 2);  // 偶数行错开半个宽度for (let x = -diagonal - rowOffset; x < diagonal * 2; x += xGap) {ctx.fillText(watermarkText, x, y);}}ctx.draw(false, () => {wx.canvasToTempFilePath({canvasId: 'watermarkCanvas',success: (res) => {const watermarkedImagePath = res.tempFilePath;console.log(watermarkedImagePath, 'watermarkedImagePath')// 上传图片的方法this.uploadImage(watermarkedImagePath);},fail: (error) => {console.error('Canvas to image failed:', error);}});});});},fail: (error) => {console.error('Get image info failed:', error);}});},fail: (error) => {console.error('Choose media failed:', error);}});},

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com