uni-app中uni.previewImage打开base64图片时手机会闪退

uni-app中uni.previewImage打开base64图片时手机会闪退

开发环境 版本号 项目创建方式
Windows 10 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:10

HBuilderX类型:正式

HBuilderX版本号:3.1.4

手机系统:Android

手机系统版本号:Android 11

手机厂商:vivo

手机机型:iqoo3

页面类型:vue

打包方式:云端

示例代码:

preview(){  
    uni.previewImage({  
               urls: [任意base64图],  
            current: 1  
    })  
},

操作步骤:

preview(){  
    uni.previewImage({  
               urls: [任意base64图],  
            current: 1  
    })  
},

预期结果:

preview(){  
    uni.previewImage({  
               urls: [任意base64图],  
            current: 1  
    })  
},

实际结果:

preview(){  
    uni.previewImage({  
               urls: [任意base64图],  
            current: 1  
    })  
},

bug描述:

base 64 图片打开uni.previewImage 方法手机会闪退


更多关于uni-app中uni.previewImage打开base64图片时手机会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

我这也是用base64场景 现在还是没修复

更多关于uni-app中uni.previewImage打开base64图片时手机会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我到现在也遇到这个问题了,还没修复

把图片存到本地,再用临时路径访问。

怎么转换啊

base64转临时路径呗

在uni-app中,uni.previewImage直接使用base64格式图片在Android设备上确实可能导致闪退,尤其是在较新的Android版本(如Android 11)上。这是因为base64字符串可能过长,处理时占用过多内存,触发系统内存限制或引发解析错误。

建议将base64图片转换为临时文件路径后再使用uni.previewImage。可以通过uni.getFileSystemManager().writeFile()方法将base64数据写入临时文件,获取文件路径后传入预览接口。示例代码:

preview() {
    const base64Data = 'your_base64_string_here'; // 替换为实际base64数据
    const filePath = `${wx.env.USER_DATA_PATH}/temp_preview_image.png`;
    const fileManager = uni.getFileSystemManager();
    fileManager.writeFile({
        filePath: filePath,
        data: base64Data.replace(/^data:image\/\w+;base64,/, ''),
        encoding: 'base64',
        success: () => {
            uni.previewImage({
                urls: [filePath],
                current: 0
            });
        },
        fail: (err) => {
            console.error('文件写入失败:', err);
        }
    });
}
回到顶部