小程序使用Image对象预加载图片·获取图片信息

微信和支付宝等小程序目前都没有直接调用Image的接口, 但可以借用canvas曲线救国,在页面设置个不可见的canvas,再通过canvas的接口能力就能调用到image了

  • 微信案例
wx.createSelectorQuery()
.select('#myCanvas') // 在 WXML 中填入的 id
.fields({ node: true, size: true })
.exec((res) => {
	// Canvas 对象
	const canvas = res[0].node
	// 图片对象
	const image = canvas.createImage()
	// 图片加载完成回调
	image.onload = () => {
		// 将图片绘制到 canvas 上
		console.log({image, width: image.width, height: image.height});
	}
	image.src = 'https://open.weixin.qq.com/zh_CN/htmledition/res/assets/res-design-download/icon64_wx_logo.png'
})
  • 支付宝案例
Page({
  // 一定要在 canvas 的 onReady 中调用,否则获取到的 context 可能不正确
  onCanvasReady() {
    // 通过 SelectorQuery 获取 Canvas 实例
    my.createSelectorQuery().select('#canvas').node().exec((res) => {
      const canvas = res[0].node;
      // const ctx = canvas.getContext('2d');
      // console.log('canvas 宽高', canvas.width, canvas.height)
      // // 开始绘画
      // ctx.fillRect(0, 0, 50, 50);
      const image = canvas.createImage();
      image .src = "https://img.alicdn.com/tfs/TB1GvVMj2BNTKJjy0FdXXcPpVXa-520-280.jpg";
      image .onload = function() {
		  console.log({image, width: image.width, height: image.height});
      }
      image.onerror = function(err) {
      	console.log('load image err');
      }
    });
  },
});

在这里插入图片描述

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值