愿 每 一 行 代 码 都 能 改 变 世 界 🍺|

Hello霖

园龄:4年1个月粉丝:4关注:0

uniapp将图片base64绘制到画布中

 html

 <view class="content">
        <canvas canvas-id="myCanvas" style="width: 300px; height: 300px;"></canvas>
    </view>

 

js

// 获取图片的完整base64
                this.qrurl = res.data

                // 去掉图片的前缀信息,仅保留base64
                const base64Data = this.qrurl.replace(/^data:image\/\w+;base64,/, '');

                // 创建文件管理对象,用来提供保存一个临时的文件地址
                const fs = uni.getFileSystemManager();

                // 临时文件地址名
                const filePath = `${wx.env.USER_DATA_PATH}/shareQrcode.jpg`

                // 写入临时文件,文件地址filePath,图片信息base64Data
                fs.writeFile({
                filePath,
                data: base64Data,
                encoding: "base64",
                success(res) {
                  // 开始绘制到base64到画布中,把文件地址放进去即可
                  let context = uni.createCanvasContext('myCanvas', this);
                  context.drawImage(filePath, 0, 0, 300, 300);
                  context.draw();
                }
            })

 

 

 

uniapp的uni.getImageInfo 只能获取网络图片地址的图片信息,如果是将base64上传到网络然后再绘制又会浪费存储空间,时间,带宽等。所以不能用这个方法配合uni.createCanvasContext绘制图片到画布。

 

如果只有base64数据的话可以直接用uni.getFileSystemManager() 获取一个临时的文件地址,然后配合绘制到画布,直接前端本地就能完成。🤭

 

本文作者:Hello霖

本文链接:https://www.cnblogs.com/Hello233/p/18167644

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Hello霖  阅读(695)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起