收藏
回答

camera 怎么实现拍照后图片变成黑白增强效果?


回答关注问题邀请回答
收藏

1 个回答

  • 小胖
    小胖
    06-14

    canvas处理wx.createCanvasContext,再转会图片wx.canvasToTempFilePat。

    帮你搜了一个,看看有没用。不过应该是我上面说的那个逻辑

    processImage(imgSrc) {

    const ctx = wx.createCanvasContext('myCanvas') // 假设你有一个名为'myCanvas'的canvas元素

    ctx.drawImage(imgSrc, 0, 0, 300, 300) // 绘制图片到canvas上,这里假设canvas大小为300x300

    ctx.draw(false, () => {

    // 使用getImageData获取图片数据,并应用黑白滤镜效果

    wx.createSelectorQuery().select('#myCanvas').boundingClientRect(rect => {

    wx.createCanvasContext('myCanvas', this).getImageData({

    x: 0,

    y: 0,

    width: rect.width,

    height: rect.height,

    success: res => {

    const imgData = res.data

    const len = imgData.length

    for (let i = 0; i < len; i += 4) {

    const avg = (imgData[i] + imgData[i + 1] + imgData[i + 2]) / 3

    // 你可以根据需求调整这里的值,以实现不同的黑白增强效果

    imgData[i] = avg // red

    imgData[i + 1] = avg // green

    imgData[i + 2] = avg // blue

    }

    ctx.putImageData({

    data: imgData,

    width: rect.width,

    height: rect.height

    }, 0, 0)

    ctx.draw(true, () => {

    // 导出处理后的图片

    wx.canvasToTempFilePath({

    canvasId: 'myCanvas',

    success: res => {

    console.log(res.tempFilePath) // 这是处理后的图片路径

    // 你可以将这个路径保存到data中,或者用于其他操作

    }

    })

    })

    }

    }).exec()

    })

    })

    }


    06-14
    有用
    回复
登录 后发表内容