皇上的第八子
皇上的第八子
  • 发布:2021-01-11 00:35
  • 更新:2021-01-11 11:28
  • 阅读:2209

【报Bug】苹果手机保存canvas图片内容是空白的

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS Catalina 10.15.2 Beta版(19C56a)

HBuilderX类型: Alpha

HBuilderX版本号: 3.0.7

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 苹果

手机机型: iPhone X

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<template>  
    <view>  
        <view style="width: 100%;height: 100%">  
            <canvas style="width: 345rpx;height: 494rpx;" canvas-id="myCanvas"></canvas>  
        </view>  
        <button @click="save">保存</button>  
    </view>  
</template>  

<script>  
    let ctx =''  
    export default {  
        data() {  
            return {  
            }  
        },  
        onLoad() {  
        },  
        onReady(){  
            ctx = uni.createCanvasContext('myCanvas');  
            this.drawShareImage();  
        },  
        methods: {  
            drawShareImage(){//绘画canvas  
                ctx.fillStyle='#FF0000';  
                ctx.fillRect(0,0,80,100);  
                ctx.draw()  
            },  
            save(){  
                let _this = this;  
                uni.canvasToTempFilePath({  
                    canvasId:'myCanvas',  
                    width: 690,  
                    height: 989,  
                    success(e) {  
                        console.log(e,'--canvasToTempFilePath')  
                        uni.saveImageToPhotosAlbum({  
                            filePath: e.tempFilePath,  
                            success(res) {  
                                _this.toast('保存成功');  
                            },  
                            fail(res){  
                                console.log(res)  
                            }  
                        })  
                    },  
                    fail(res){  
                    }  
                })  
            }  
        }  
    }  
</script>  

操作步骤:

点击‘保存’按钮

预期结果:

把canvas保存一张有红色内容的图片

实际结果:

内容是空白的

bug描述:

标准基座,运行到手机,保存canvas的图片为空白的

2021-01-11 00:35 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com - 初十啊

我这用canvas画出来之后再这样生成,再用存的临时路径canvasImgCon 去保存图片
//开始绘画,必须调用这一步,才会把之前的一些操作实施
myCanvas.draw(true, () => {
uni.canvasToTempFilePath({
canvasId: 'posterCanvas',
success: (res) => {
// 在H5平台下,tempFilePath 为 base64
// console.log(res.tempFilePath)
that.canvasImgCon = res.tempFilePath;
uni.hideLoading();
},
fail: () => {
uni.showToast({
title: '名片加载失败',
duration: 2000
});
}
});
});

DCloud_UNI_GSQ

DCloud_UNI_GSQ

删除 如下部分试试:

width: 690,    
height: 989,  
  • 皇上的第八子 (作者)

    删除就好了...是我设置的太大了吗....

    2021-01-11 11:57

  • DCloud_UNI_GSQ

    回复 皇上的第八子: 是的,超出了canvas大小,后续会优化一下这块

    2021-01-11 14:55

  • 1***@qq.com

    回复 DCloud_UNI_GSQ: ios canvas 尺寸太大 空白的问题现在有解决方案了吗

    2022-02-27 23:18

  • DCloud_UNI_GSQ

    回复 1***@qq.com: 即将发布的3.4.0版本中会携带一个hidpi配置项

    2022-02-28 18:04

该问题目前已经被锁定, 无法添加新回复