微信小程序实现页面添加水印 waterMark

在你的项目目录中添加组件components目录(定义成组件方便项目调用)

组件

wxml:

<!--components/waterMark.wxml-->
<view class='water-mark'>
  <view class='row' wx:for="{{rows}}" wx:key="index">
    <view class='col' wx:for="{{cols}}" wx:key="index" style="color:{{color}};font-size:26rpx;">{{text}}</view>
  </view>
</view>

wxss:

/* components/waterMark.wxss */
.water-mark-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 99999;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  pointer-events: none; 
  flex:1;
}
 
.row{
  display: flex;
  flex-direction: column;
  align-items: center;
}
.col{
  transform: rotate(-45deg);
  height: 200rpx;
}

json:

{
  "component": true
}

js:

Component({
  data: {
    text: 'Yancey',
    color: 'rgba(0,0,0,0.2)',
    rows: [],
    cols: []
  },
  // 组件在页面上挂载时触发,注意如果页面没卸载过,该事件就不会触发第二次
  attached() {
    const { windowWidth, windowHeight } = wx.getSystemInfoSync();
    const rows = Math.ceil(windowWidth / (20 * this.data.text.length));
    const cols = Math.ceil(windowHeight / 100);
    const waterMark=wx.getStorageSync('waterMark')
    this.setData({
      rows: new Array(rows),
      cols: new Array(cols)
    });
  },
})

组件调用

json:

{
  "navigationBarTitleText": "基本信息",
  "usingComponents": {
    "water-mark": "../../components/waterMark"
  }
}

wxml:

<!-- 水印组件 -->
<water-mark></water-mark>
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是为图片添加水印微信小程序代码: 1. 在 wxml 文件中添加一个 image 标签和一个 text 标签,用于显示图片和水印文字。 <view class="container"> <image src="{{imageUrl}}" mode="aspectFit" class="image"></image> <text class="watermark">{{watermarkText}}</text> </view> 2. 在 js 文件中定义 imageUrl 和 watermarkText 变量,并在 onLoad 函数中获取图片路径。 Page({ data: { imageUrl: '', watermarkText: '这是水印文字' }, onLoad: function (options) { this.setData({ imageUrl: options.imageUrl }) } }) 3. 在 wxss 文件中定义水印文字的样式。 .watermark { position: absolute; bottom: 10px; right: 10px; font-size: 16px; color: rgba(255, 255, 255, 0.5); text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); } 4. 在 app.json 文件中添加权限设置,允许小程序保存图片到相册。 { "pages": [ "pages/index/index" ], "permission": { "scope.writePhotosAlbum": { "desc": "保存图片到相册" } } } 5. 在 js 文件中添加保存图片的函数,并在点击保存按钮时调用该函数。 saveImage: function () { wx.showLoading({ title: '正在保存', }) wx.canvasToTempFilePath({ x: 0, y: 0, width: 750, height: 1000, destWidth: 750, destHeight: 1000, canvasId: 'canvas', success: function (res) { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: function () { wx.hideLoading() wx.showToast({ title: '保存成功', }) }, fail: function () { wx.hideLoading() wx.showToast({ title: '保存失败', icon: 'none' }) } }) } }) } 6. 在 wxml 文件中添加一个 canvas 标签,并在 js 文件中获取 canvas 上下文,将图片和水印文字绘制到 canvas 上。 <canvas canvas-id="canvas" class="canvas"></canvas> Page({ onReady: function () { var that = this wx.createSelectorQuery().select('#canvas').fields({ node: true, size: true, }).exec(function (res) { const canvas = res[0].node const ctx = canvas.getContext('2d') const dpr = wx.getSystemInfoSync().pixelRatio canvas.width = res[0].width * dpr canvas.height = res[0].height * dpr ctx.scale(dpr, dpr) ctx.drawImage(that.data.imageUrl, 0, 0, 750, 1000) ctx.font = '16px sans-serif' ctx.fillStyle = 'rgba(255, 255, 255, 0.5)' ctx.shadowColor = 'rgba(0, 0, 0, 0.5)' ctx.shadowOffsetX = 1 ctx.shadowOffsetY = 1 ctx.shadowBlur = 1 ctx.fillText(that.data.watermarkText, 690, 980) }) } }) 以上就是为图片添加水印微信小程序完整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值