<i id='nrxje'><tr id='nrxje'><dt id='nrxje'><q id='nrxje'><span id='nrxje'><b id='nrxje'><form id='nrxje'><ins id='nrxje'></ins><ul id='nrxje'></ul><sub id='nrxje'></sub></form><legend id='nrxje'></legend><bdo id='nrxje'><pre id='nrxje'><center id='nrxje'></center></pre></bdo></b><th id='nrxje'></th></span></q></dt></tr></i><div id='nrxje'><tfoot id='nrxje'></tfoot><dl id='nrxje'><fieldset id='nrxje'></fieldset></dl></div>
        <legend id='nrxje'><style id='nrxje'><dir id='nrxje'><q id='nrxje'></q></dir></style></legend>

        <small id='nrxje'></small><noframes id='nrxje'>

        <tfoot id='nrxje'></tfoot>

        • <bdo id='nrxje'></bdo><ul id='nrxje'></ul>

        如何将图像从 expo-image-picker 保存到 expo-file-system 然后渲染它?

        How do I save an image from expo-image-picker to expo-file-system and then render it?(如何将图像从 expo-image-picker 保存到 expo-file-system 然后渲染它?)

          <legend id='rf3Oi'><style id='rf3Oi'><dir id='rf3Oi'><q id='rf3Oi'></q></dir></style></legend>

        1. <i id='rf3Oi'><tr id='rf3Oi'><dt id='rf3Oi'><q id='rf3Oi'><span id='rf3Oi'><b id='rf3Oi'><form id='rf3Oi'><ins id='rf3Oi'></ins><ul id='rf3Oi'></ul><sub id='rf3Oi'></sub></form><legend id='rf3Oi'></legend><bdo id='rf3Oi'><pre id='rf3Oi'><center id='rf3Oi'></center></pre></bdo></b><th id='rf3Oi'></th></span></q></dt></tr></i><div id='rf3Oi'><tfoot id='rf3Oi'></tfoot><dl id='rf3Oi'><fieldset id='rf3Oi'></fieldset></dl></div>
            <tbody id='rf3Oi'></tbody>
        2. <small id='rf3Oi'></small><noframes id='rf3Oi'>

              <tfoot id='rf3Oi'></tfoot>

                <bdo id='rf3Oi'></bdo><ul id='rf3Oi'></ul>
                  本文介绍了如何将图像从 expo-image-picker 保存到 expo-file-system 然后渲染它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试将选定的图像存储在应用程序中,而不是存储在图像卷中.

                  I am trying to store selected images within the application, as opposed to in the image roll.

                  这是我尝试过的:

                  
                      await FileSystem.downloadAsync(
                        imageUri, // the image uri from expo-image-picker
                        FileSystem.documentDirectory + `${uuid}-image.jpg`
                      )
                        .then(({ uri }) => {
                          console.log("Finished downloading to ", uri);
                        })
                        .catch((error) => {
                          console.error(error);
                        });
                  
                  

                  我收到错误:

                  Unable to download file: Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL"
                  

                  我也试过了:

                      await FileSystem.writeAsStringAsync(
                        FileSystem.documentDirectory + `spotPhotos/${uuid}-image.jpg`,
                        image.base64
                      );
                  

                  当我尝试在 ImageBackground 组件中使用图像时,这似乎成功地保存了图像,但是我没有成功.

                  This seemed to be successful in saving the image, when I tried to use the image in an ImageBackground component, however I was not successful.

                  
                  <ImageBackground
                          source={'data:image/png;base64'+imageFile}
                          style={{ borderRadius: 5, borderColor:  'black', width: 100, flex: 1, resizeMode: "cover", justifyContent: "center" }}
                        >
                  ...
                  </ImageBackground>
                  

                  出现无法读取文件夹的错误:

                  with an error saying the folder could not be read:

                  getFile -> err [Error: File '/var/mobile/Containers/Data/Application/.../spotPhotos' could not be read.]
                  

                  我可以使用 uri 保存图像文件本身吗?我需要将其转换为 base64 并返回吗?

                  Can I save the image file itself using the uri? Do I need to convert it to base64 and back?

                  看来我已经能够成功保存使用以下编码的base64图像了:

                  It seems I have been able to successfully save the image base64 encoded with the following:

                      await FileSystem.writeAsStringAsync(
                        FileSystem.documentDirectory + `spotPhotos/${uuid}-imagelocation.jpg`,
                        image.base64
                      );
                  
                  

                  并通过以下方式访问编码图像:

                  and access the encoded image with:

                   let imageFile = async () => {
                      let uri = FileSystem.documentDirectory + "spotPhotos/" + spot.imageloc;
                      let options = { encoding: FileSystem.EncodingType.Base64 };
                     let base64 =  await FileSystem.readAsStringAsync(uri, options);
                     return (base64);
                    }
                  

                  当我 console.log imageFile 我得到一个巨大的字符墙,然后崩溃 Vscodium,即使我尝试使用 string.prototype.slice() 记录前几个字符,所以我无法检查它,但我认为它是 base64 编码文件.

                  When I console.log imageFile I get a huge wall of characters, which then crashes Vscodium, even when I try to just log the first few characters with string.prototype.slice(), so I havn't been able to inspect it, but I take that to be the base64 encoded file.

                  当我尝试将返回的值引用为 Image 或 ImageBackground 组件的来源时:

                  When I try to reference the returned value as the source of an Image or ImageBackground component like so:

                  <Image style={{width: 50, height: 50}} source={{imageFile}}/>
                  // or 
                  
                  <Image style={{width: 50, height: 50}} source={{imageFile()}}/>
                  
                  // or 
                  
                  <Image style={{width: 50, height: 50}} source={{uri:`data:image/png;base64,${imageFile}`}}/>
                  // or 
                  
                  <Image style={{width: 50, height: 50}} source={{uri:`data:image/jpg;base64,${imageFile}`}}/>
                  
                  

                  我收到警告消息:invalid prop 'source' provided to 'Image'.

                  我也收到一条错误消息

                  Error: You attempted to set the key `_65` with the value of 1 on an object 
                  that is meant to be immutable and has been frozen.
                  

                  由于这篇文章中的建议不起作用,我的问题可能与我从文件.

                  Since the suggestion in this post doesn't work, my issue may be with the data I am pulling from the file.

                  在 expo-file-system 中存储和访问 jpg 文件的正确 api 用法是什么?

                  推荐答案

                  我用下面的代码搞定了这个:

                  I got this working with the following code:

                  useEffect(() => {
                      if (data[spotIndex].image) {
                        imageFile();
                      }
                    }, [location]);
                  
                    let imageFile = async () => {
                      if (data[spotIndex].image.length > 0) {
                        let uri = FileSystem.documentDirectory + data[spotIndex].image;
                        let getInfo = await FileSystem.getInfoAsync(uri);
                        getInfo && console.log(getInfo);
                        let options = { encoding: FileSystem.EncodingType.Base64 };
                        let base64 = await FileSystem.readAsStringAsync(uri, options);
                        setBase64Val("data:image/jpeg;base64," + base64);
                      }
                    };
                  
                  

                  <ImageBackground source={{ uri: base64Val }}>
                  
                  

                  这篇关于如何将图像从 expo-image-picker 保存到 expo-file-system 然后渲染它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Hover image - display div over it(悬停图像 - 在其上显示 div)
                  Gradient Button to background-color blinks on hover(悬停时背景颜色的渐变按钮闪烁)
                  How to make hovering over active button not use hover effect?(如何使悬停在活动按钮上不使用悬停效果?)
                  html javascript show image hover(html javascript 显示图像悬停)
                  Why does my img hover not work?(为什么我的 img hover 不起作用?)
                  How to get css hover values on click?(如何在点击时获得 css 悬停值?)

                      <small id='bizcs'></small><noframes id='bizcs'>

                      <tfoot id='bizcs'></tfoot>
                        • <bdo id='bizcs'></bdo><ul id='bizcs'></ul>
                        • <i id='bizcs'><tr id='bizcs'><dt id='bizcs'><q id='bizcs'><span id='bizcs'><b id='bizcs'><form id='bizcs'><ins id='bizcs'></ins><ul id='bizcs'></ul><sub id='bizcs'></sub></form><legend id='bizcs'></legend><bdo id='bizcs'><pre id='bizcs'><center id='bizcs'></center></pre></bdo></b><th id='bizcs'></th></span></q></dt></tr></i><div id='bizcs'><tfoot id='bizcs'></tfoot><dl id='bizcs'><fieldset id='bizcs'></fieldset></dl></div>

                          1. <legend id='bizcs'><style id='bizcs'><dir id='bizcs'><q id='bizcs'></q></dir></style></legend>
                              <tbody id='bizcs'></tbody>