当前位置: 首页 > 知识库问答 >
问题:

react-native:从base64字符串为iOS和Android创建图像(在react-native-elements列表中)

轩辕嘉平
2023-03-14

我正在尝试通过REST调用从DB中显示动态(react-native-元素)列表中的图标,该调用将图标传递为Base64编码字符串(即这里使用jHipster/swagger完成)。

它必须同时适用于iOS和Android。

我认为这应该是一个非常常见的用例,但结果却有点挑战。。。

到目前为止我所尝试的:

  • 使用静态addImageFromBase64(base64ImageData,成功,失败)参见此处
    • 仅适用于iOS(@platform-iOS
    var base64Icon = 'data:image/png;base64,iVBORw0KGgoAAAANS ...
    <Image source={{uri: base64Icon}} ... />
      < li >该讨论中提到的PR后来关闭了,但不知何故,似乎仍引入了“data:”方案,请参见RCTConvert.m,尽管它未记录在图像中 < li >但是它似乎只在iOS上实现(只在。m文件) < li >查看Android的图像,似乎渲染被委托给本机端,这可能是它没有在Android上实现的原因(至少它在Android上对我不起作用)。

    那么有什么好方法可以将base64图像字符串放入Android反应原生应用程序中吗?

    或者是否有一个好的做法或库来解决这个问题(通过 REST API 将图标动态地从数据库获取到反应原生应用程序中)以完全不同的方式?

共有1个答案

龚承嗣
2023-03-14

事实上,我一直在结合一些不同的缺陷,还添加了React原生元素以增加混乱…
感谢martwetzels用高度/宽度提示引导我朝着正确的方向前进。

如果其他人对图像和“data:”方案有问题,这些是我遇到的主要障碍:

>

  • 对于 React Native

    • 如果在中使用'data:'

    所以这是 React Native 的一个工作示例

    var base64Icon = 'data:image/png;base64,iVBORw0KGgoAAAANS ...
    <Image style={{width: 50, height: 50}} source={{uri: base64Icon}}/>
    

    对于反应原生元素中的图像

    • 只有avataprop会使用url-leftIconprop用于包含库中的图标,例如材料-仅限图标-或用于单独的React Native元素
    • avataprop可以有一个可选的单独avatar样式,但默认情况下会自动缩放图像
    • 带有嵌套leftIcon道具

    反应原生元素的工作示例

    <List>
        {            
            myItems.map((item, i) => (
            <ListItem
                key={i}
                title={item.name}
                leftIcon={<Image style={{width: 35, height: 35}} source={{uri: item.base64Icon}}/>}
            />
            ))
        }
    </List>
    

    反应原生元素的工作示例

    <List>
        {            
            myItems.map((item, i) => (
            <ListItem
                key={i}
                title={item.name}
                avatar={{uri: item.base64Icon}}
                // optional: avatarStyle={{width: 50, height: 50}}
            />
            ))
        }
    </List>
    

    到目前为止,一旦理解,这一切都是相当明显的…抱歉问了这个愚蠢的问题;-)

    结果,因为我所有的困惑都与文档有关,我将为React Native和Elements文档提出一些PRs。

    编辑:PR现在被合并,同时,关于带有“data:”uri模式的图像的文档更改以及指定大小的需要被公开!在以下位置搜索“data:”:
    http://facebook.github.io/react-native/docs/images.html
    http://facebook.github.io/react-native/docs/image.html

  •  类似资料:
    • 我正在构建一个react原生应用程序,它需要以base64字符串格式存储图像,以实现离线查看功能。 什么库/函数会给我最好的结果来存储图像为Bas64字符串?假设我的网址是“http://www.example.com/image.png”。 另外,在将其存储为字符串之前,是否需要进行http请求以获取它?我的逻辑是肯定的,但在react native中,您可以在 在反应原生中做到这一点的最佳选择

    • Cross Platform React Native UI Toolkit Get Started Installation Followthese instructionsto install React Native Elements! Usage Start using the components or try it on Snackhere. import { Button } fro

    • 问题内容: 我正在考虑将React Native用于新的Web应用程序。是否可以使用它同时发布iOS和Android应用程序? 我知道这是在路线图上,但是我不清楚这将是一个单独的开源项目(例如,React Android与React Native)还是一个(例如,React Native)。 问题答案: TLDR :很有可能。但这取决于您的用例。 您可以实现约 80〜99 +%的代码复用率 (取决

    • DEPS: 在从RN 0.45更新到0.50和从RN-Admob从1.3.2更新到2.0.0-beta.3之后 尝试使用react-native run-android构建时 /node_modules/react-native-admob/android/src/main/Java/com/sbugert/rnadmob/rnadmobinterstitialadmodule Java:117:

    • 我在iOS中有一个相当复杂的React原生项目,我想把它移植到Android上,测试它的可移植性。我已经完成了以下标准安装说明: '安装最新的JDK安装Android SDK:On Mac:brew安装Android SDK导出Android_HOME=/usr/local/opt/Android SDK打开Android SDK管理器(在Mac上启动新的shell并运行Android);在出现的

    • 当我试图在ios模拟器上运行应用程序时,我得到了这个。有谁能告诉我这个问题的原因/解决办法是什么。 以下构建命令失败:CompileC/users/xxx/library/developer/xcode/deriveddata/eattog-dfbqbeyhmbgzhfcodvhcaqjxepf/build/intermediates.noindex/p s.llvm.clang.1_0.comp