微信小程序 动态获取图片主色调作为背景

动态获取图片主色调作为背景
引入image-main-color插件

import { getMainColor } from '../../utils/image-main-color.js'


setBackgroundColor() {
    const ctx = wx.createCanvasContext('myCanvas')
    const that = this
    wx.getImageInfo({
      src: `${that.data.imageSrc}`,
      success: function (res) {
        const poster = res.path
        ctx.drawImage(poster, 100,100, 150, 100)
        ctx.draw(false, () => {
          wx.canvasToTempFilePath({
            x: 100,
            y: 100,
            width: 150,
            height: 100,
            destWidth: 150,
            destHeight: 100,
            canvasId: "myCanvas",
            success(res) {
              let tempPath = res.tempFilePath
              // 这种方式获取canvas区域隐含的像素数据
              wx.canvasGetImageData({
                canvasId: 'myCanvas',
                x: 100,
                y: 100,
                width: 150,
                height: 100,
                success(res) {
                  const imageData = res.data
                  // 分区块,可以拓展性的求主要色板,用来做palette
                  let resImageObj = getMainColor(imageData)
                  const { defaultRGB } = resImageObj
                  const { r, g, b } = defaultRGB
                  let resBackground = `rgb(${r}, ${g}, ${b})`
                  // console.log('resBackground',resBackground)
                  that.setData({
                    resBackground
                  })
                  
                  // ctx.setFillStyle(resBackground)
                  // ctx.fillRect(0, 0, 150, 100)
                  // ctx.draw()
                },
              })
            },
            fail() {
              throw new Error()
            }
          })
        })
      },
      fail() {

      }
    })
  },
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值