uniapp实现将图片按比例画在canvas上

直接上代码(可扫码体验)
在这里插入图片描述
HTML

<template>
	<view class="canvas-content">
		<!-- 画布 -->
    <canvas
      class="mycanvas"
      canvas-id="Canvas"
      id="Canvas"
    >
    </canvas>
	</view>
</template>```

js

<script>
	export default {
		data() {
			return {
        ctx: null,
        windowWidth: 0,
        windowHeight: 0,
			}
		},
		onLoad() {
      this.ctx = uni.createCanvasContext("Canvas")
		},
    onShow () {
      let systemInfo = uni.getSystemInfoSync()
			this.windowWidth = systemInfo.windowWidth
			this.windowHeight = systemInfo.windowHeight
      this.drawImage()
    },
		methods: {
      drawImage () {
        let _this = this
        let imgUrl = '图片地址'
        uni.getImageInfo({
          src: imgUrl,
          success (data) {
            let width = _this.windowWidth
            let height = _this.windowHeight
            let top = 0
            let left = 0
              // 按比例缩放图片
            if (height / width >= data.height / data.width) {
              height = parseInt(width * data.height / data.width)
            } else {
              width = parseInt(height * data.width / data.height)
            }
            left = (_this.windowWidth - width) / 2
            top = (_this.windowHeight - height) / 2
            _this.ctx.drawImage(imgUrl, left, top, width, height)
            _this.ctx.draw(false, function () {
              setTimeout(() => {
                // 将画布导出为临时图片文件
                uni.canvasToTempFilePath({
                  canvasId: 'Canvas',
                  success: (canRes) => {
                    console.log(canRes.tempFilePath)
                  },
                  fail (err) {
                    console.log(err)
                  }
                })
              }, 200)
            })
          }
        })
      },
		}
	}
</script>

css

<style lang="scss" scoped>
.mycanvas {
  width: 100%;
  height: 100vh;
}
</style>
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值