Я использую средство выбора expo-image-picker, чтобы получить uri изображения локально сохраненного изображения. Я хочу использовать манипулятор expo-image-манипулятора для изменения размера изображения перед его отправкой на бэкэнд, но expo imageManipulator не будет принимать uri из средства выбора изображений expo. Эти ошибки возникают при работе в expo на эмуляторе Android.
Вот базовый код, получающий uri:
import * as ImagePicker from "expo-image-picker";
const selectImage = async () => {
try {
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
quality: 0.5,
});
if (!result.cancelled) onChangeImage(result.uri);
} catch (error) {
console.log("Error reading an image", error);
}
};
Я могу отправить это изображение прямо на серверную часть и сохранить его на моем S3. Когда я использую console.log (uri), я получаю следующее:
файл: /data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252FThredFit-59f4d533-f203-4efb-bcb0-6a5786d44584/ImagePicker/0ea74111-8677-4074-81af-5fbc1f0pg8pg
Теперь я пытаюсь ввести это в средство изменения размера изображения ниже (как imageUri):
import * as ImageManipulator from 'expo-image-manipulator';
const setSize = async (imageUri, width, height) => {
try {
const manipResult = await ImageManipulator.manipulateAsync(
imageUri,
[{ resize: { width: width, height: height } }],
{ format: 'jpeg' }
);
console.log(manipResult);
} catch (error) {
console.log("Error manipulating image: ", error);
}
};
и я получаю следующую ошибку в эмуляторе Android:
abi38_0_0.com.facebook.react.bridge.ReadableNativeMap не может быть преобразован в java.lang.String
если я сначала преобразовываю imageUrl в строку, я обхожу эту ошибку, но средство изменения размера выдает ошибку, говоря, что он не может декодировать изображение:
[Ошибка: не удалось получить декодированное растровое изображение файла: /data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252FThredFit-59f4d533-f203-4efb-bcb0-6a5786d44584/ImagePicker/0ea74111-8677-40 -81af-5fbc1f0758d5.jpg: java.lang.Exception: Ошибка загрузки растрового изображения]
Изображение ошибки эмулятора изображение зарегистрированной ошибки
file:/data/user/0/host.exp.....
Это должно бытьfile:///data/user/0/host.exp.....
В любом случае удалитеfile:/
из этой строки. И поймите, что обычно вы должны удалитьfile://
, поскольку это протокол. Тогда вы получите/data/user/0/host.exp....
в качестве пути. - person blackapps   schedule 02.04.2021file:///data/user/0/host.exp.......
- это то, что в итоге сработало. Вот зарегистрированный результат:manipResults: Object { "height": 39, "uri": "file:///data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252FThredFit-59f4d533-f203-4efb-bcb0-6a5786d44584/ImageManipulator/36e913d6-98b1-4899-a3d7-d3e5d3675641.jpg", "width": 50, }
- person Nick   schedule 02.04.2021