将 Base64 转换为 png 并保存在设备中 React Native Expo

2024-02-11

我一直在尝试使用 React Native 和 Expo 在移动设备上保存图像,我尝试过这些软件包:

import RNFetchBlob from 'react-native-fetch-blob';
import RNfs from 'react-native-fs ';

但在实现它们时都给了我这个错误

null is not an object (evaluating 'RNFetchBlob.DocumentDir')

然后尝试 expo-file-system 但我没有看到任何清晰的示例来说明如何转换 base64 并将其下载到移动设备

UPDATE

我能够做到这一点,我的目的是保存QR的base64并将其转换为png,同时能够共享它,我使用expo-file-system and expo-sharing

这是小米代码,

import * as FileSystem from 'expo-file-system';
import * as Sharing from 'expo-sharing';

//any image, I use it to initialize it

const image_source = 'https://images.unsplash.com/photo-1508138221679-760a23a2285b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&w=1000&q=80';

share=()=>{
  var self = this;
  self.setState({loading:true})
        FileSystem.downloadAsync(
        image_source,
        FileSystem.documentDirectory  + '.png'
      )
        .then(({ uri }) => {
          console.log(self.state.base64Code);
          FileSystem.writeAsStringAsync(
              uri,
              self.state.base64Code,
              {'encoding':FileSystem.EncodingType.Base64}
          )
          .then(( ) => {
            this.setState({loading:false})
            Sharing.shareAsync(uri);
          })

        })
        .catch(error => {
          console.error(error);
        });
}

其实我不知道这是否是最好的方法,先在目录中写入一个png图像,然后用base64代码重写它,但它有效


这对我有用:

const data = "data:image/png;base64,ASDFASDFASDf........"
const base64Code = data.split("data:image/png;base64,")[1];

const filename = FileSystem.documentDirectory + "some_unique_file_name.png";
await FileSystem.writeAsStringAsync(filename, base64Code, {
  encoding: FileSystem.EncodingType.Base64,
});

const mediaResult = await MediaLibrary.saveToLibraryAsync(filename);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Base64 转换为 png 并保存在设备中 React Native Expo 的相关文章

随机推荐

  • 在多索引数据框中选择行

    我想单独提取 S 的 bin 其中每列 X Y gt 0 5 或多个 bin gt 0 5 行数 在示例中 对于 AR1 应仅选择 bin 4 因为 X 和 Y gt 0 5 蓝色指示 对于 PO1 应选择 bin 1 2 3 和 4 因为
  • 如何在 win7 x64 上使用带有 php (xampp) 的 oracle 客户端 11.2

    我刚刚在我的 win7 x64 PC 上安装了一个实际的 XAMPP 来编写一些 PHP 脚本来连接到 Oracle DB 我还安装了正常的oracle 11 2 0客户端 PATH和ORACLE HOME设置正确 该客户端用于我的所有其他
  • android 如何将对象保存到文件?

    有人知道如何在 android 上将对象保存和恢复到文件吗 使用 openFileOutput 打开文件 http developer android com guide topics data data storage html file
  • 页面重新加载后,Meteor.user() 返回未定义

    问题是我想检查用户是否通过我的路线中的 onBeforeAction 内的 Meteor user 登录 问题是 页面重新加载后 Meteor user 在加载之前的一瞬间返回未定义 这是我的路线配置 Router map function
  • 设置 dbt 日期变量

    我试图将 dbt 模型中的日期变量设置为 7 天前的日期 该模型将针对 Redshift 数据库运行 我已执行以下操作来设置变量 但是收到错误 DATE ADD 未定义 set start date TRUNC DATE ADD day 7
  • python pycparser设置错误

    我在 CentOS 7 上通过 pip 设置 pyparser 时看到以下错误 usr bin python2 u c import setuptools tokenize file tmp pip build PMzCYU pycpars
  • GMSAutocompleteViewController iOS,如何更改搜索栏中的文本颜色[重复]

    这个问题在这里已经有答案了 我正在使用 GMSAutocompleteViewController 并想要更改 searchBar 中的 textColor 但找不到方法 我设法更改了一些颜色但没有更改 searchBar 文本 我尝试过以
  • hostconfig.json 在哪里(Docker 桌面 + WSL2 环境)

    据我所知 docker不支持任何在创建容器后更改端口映射的命令 但这个答案说 通过更改 hostconfig json 文件 我可以更改端口映射 如何将端口映射分配给现有的 Docker 容器 https stackoverflow com
  • `System.currentTimeMillis()` 在多个进程中是否正确?

    我们遇到这样的情况 主进程写入日志 然后它会生成多个工作进程 这些进程会写入自己的日志 我希望工作人员通过主服务器登录 但由于某种原因 这个想法遭到了抵制 我想知道的是 我可以相信多个文件中最终的时间戳彼此一致吗 即 如果我将日志文件合并为
  • 让 WiX/Burn 检测所需的 .NET Framework 版本

    我怎样才能拥有Burn http en wikipedia org wiki WiX Burn检测是否安装了所需的 NET 4 5 框架 如果没有在启动自定义 UI 之前通知用户该安装需要 NET 4 5 才能运行 如果没有先决条件检查 我
  • 当我使用 Chutzpah.json 文件时,使用 Chutzpah 运行测试时出现问题

    当我提供 Chutzpah json 文件时 我在让 Chutzpah 运行我的打字稿测试时遇到问题 我的项目如下所示 我的 Chutzpah json 文件如下所示 Compile Mode External ExtensionsWith
  • 透明视图上的 UITapGestureRecognizer

    我有一个带有视图的树 其中最高级别的视图是透明的 并且包含图像或标签 具有透明背景 将 UITapGestureRecognizer 附加到此视图时 我仅收到有关包含图像的视图的通知 另外 如果我将视图留空 那么仅当背景颜色与 UIColo
  • “按 Enter 开始游戏” XNA 简介屏幕

    我创建了一个介绍屏幕 其中包含 按 Enter 开始游戏 然后退出 当然退出没有问题 但让游戏开始有点困难 有什么建议吗 最简单的方法是设置状态机 看起来真的很简单 enum GameState TitleScreen 0 GameStar
  • 如何从 Fluent-ffmpeg 传输到 AWS s3?

    我想 const passthroughStream new PassThrough ffmpeg stream audioBitrate 8 output passthroughStream end true on progress p
  • 如何编辑dll档案?

    好吧 所以我对 DLL 不太了解 但我需要编辑其中一些 那些看起来像存档文件的文件 如 firefox的xul dll windows twain 32 dll 当我尝试在 NET Reflector 中打开它们时 它无法打开它们 这里的一
  • 从 csv 文件加载约束(amazon deequ)

    我正在查看 Deequ 它看起来是一个非常好的图书馆 我想知道是否可以从 HDFS 中的 csv 文件或 orc 表加载约束 假设我有一张包含这些类型的表 case class Item id Long productName String
  • 在线性模型中结合cbind和paste

    我想知道我怎样才能想出一个lm公式语法使我能够使用paste和 一起cbind用于多元多元回归 Example 在我的模型中 我有一组变量 对应于下面的原始示例 data mtcars depVars lt paste mpg disp i
  • 如何将列表转换为每行包含 N 个项目的 CSV 文件?

    我想创建一个新的 CSV 文件 每行包含 3 个项目 我的源文件如下所示 没有新行 换行符 12123 1324 232324 243443 234 2345 2334 2445 22355 222234 2345 现在我想将此文件转换为
  • PHP 数组语法解析错误左方括号“[”[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个返
  • 将 Base64 转换为 png 并保存在设备中 React Native Expo

    我一直在尝试使用 React Native 和 Expo 在移动设备上保存图像 我尝试过这些软件包 import RNFetchBlob from react native fetch blob import RNfs from react