我通过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。
我该如何解决这个问题?
答案 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
})