如何获得rct-image-store的绝对路径:// 0

时间:2018-06-01 12:55:24

标签: ios react-native

我通过ImageEditor以这种方式裁剪Image:

   ImageEditor.cropImage(
        photo.imageUri,
        cropData,
        (croppedImageURI) => {                
           imageSource = croppedImageURI;    
        },
        (cropError) => {
            console.log("fail");
        }
    );

裁剪图像的路径是“rct-image-store:// 0”。如果在同一屏幕中使用此路径,则可以很好地显示此图像。但是,如果我将此路径传递到其他屏幕:

this.props.navigation.navigate('Tape', { imageSource });

然后我收到此错误:

  

JSON值'{       uri =“rct-image-store:// 0”;类型NSMutableDictionary无法转换为图像。仅支持本地文件或数据URI。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用react-native-image-resizer。您将获得类似这样的路径。

  

/ var / mobile /容器/数据/应用程序/ 3BA7E152-E21E-4ADD-84A3-8CCCBC7FBFAE / Documents / var / mobile /容器/容器/数据/应用程序/ 3BA7E152-E21E-4ADD-84A3-8CCCBC7FBFAE / Documents / 194D4C64- 8EA9-4058-9307-BA1316347DA0.jpg

您可以将此图像文件路径传递到其他屏幕。下面是示例代码:

import ImageResizer from 'react-native-image-resizer';
const RNFS = require('react-native-fs');

// The output path you can use whatever you want, for sample I am using 
// documentary path.
const outputPath = `${RNFS.DocumentDirectoryPath}`;

// The imageStore path here is "rct-image-store://0" 
ImageResizer.createResizedImage(
    imageStorePath,
    1280,
    720,
    'JPEG',
    25,
    0,
    outputPath,
).then((success) => {
    console.log(success);
    console.log(success.path);
    //If you console success.path then it will give you something like this
    // /var/mobile/Containers/Data/Application/3BA7E152-E21E-4ADD-84A3-8CCCBC7FBFAE
    // /Documents/var/mobile/Containers/Data/Application/3BA7E152-E21E-4ADD-84A3-8CCCBC7FBFAE/Documents/194D4C64-8EA9-4058-9307-BA1316347DA0.jpg
})