You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Skia Base64图片在Android不显示但iOS正常问题排查

React Native Skia Android端加载Base64图片失败(useImage返回null)

问题现象

  • 使用React Native Skia的useImage加载Base64格式图片时,iOS设备能正常显示,Android设备无法显示图片。
  • 排查确认:Android端调用useImage(base64)会返回null,这是导致图片不显示的直接原因。

代码示例

// 排查发现Android端useImage返回null,导致图片无法显示
const image = useImage(base64); // Android端此处返回null

问题截图

Android端图片不显示的截图

解决方法

方法1:将Base64转换为本地文件后加载

借助文件操作库(如react-native-fs)把Base64字符串写入本地临时文件,再通过文件路径调用useImage:

import RNFS from 'react-native-fs';
import { useImage } from '@shopify/react-native-skia';
import { useState, useEffect } from 'react';

// 转换Base64为本地文件路径
const convertBase64ToLocalFile = async (base64Str) => {
  const tempPath = `${RNFS.CachesDirectoryPath}/temp_skia_image.png`;
  // 移除Base64前缀(如果包含的话)
  const pureBase64 = base64Str.replace(/^data:image\/(png|jpg|jpeg);base64,/, '');
  await RNFS.writeFile(tempPath, pureBase64, 'base64');
  return tempPath;
};

// 组件内使用
const YourComponent = ({ base64Image }) => {
  const [localImagePath, setLocalImagePath] = useState(null);

  useEffect(() => {
    if (base64Image) {
      convertBase64ToLocalFile(base64Image).then(setLocalImagePath);
    }
  }, [base64Image]);

  const image = useImage(localImagePath);

  // 后续渲染逻辑
  return (
    // ...
  );
};

方法2:升级React Native Skia版本

该Base64加载问题在React Native Skia后续版本中已被修复,可尝试升级到最新稳定版本,直接使用useImage(base64)即可正常加载。

内容的提问来源于stack exchange,提问作者Jemzzzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:25:03