Компонент imagePicker хорошо работает как на iOS, так и на Android.
Соотношение сторон отлично работает на Android, но не работает на iOS. Я использую create-реагировать-нативное приложение, и я не хочу извлекать и использовать другой пакет.
Мне нужно создать три варианта обрезки - Пейзаж, Квадрат и Портрет. Прямо сейчас я могу получить только квадратные изображения.
Я получаю квадратные размеры для ширины и высоты при съемке изображения с камеры, но получаю исходные размеры изображения при выборе из галереи.
Я использую образец кода. Дайте мне знать, что можно сделать, чтобы исправить это, пожалуйста, или другой пакет, который я мог бы использовать, чтобы добиться этого без извлечения. Большое спасибо.
import React, { Component } from 'react';
import { Button, Text, ScrollView, StyleSheet } from 'react-native';
import { ImagePicker, Permissions, Constants } from 'expo';
export default class App extends Component {
state = {
result: null,
};
askPermissionsAsync = async () => {
await Permissions.askAsync(Permissions.CAMERA);
await Permissions.askAsync(Permissions.CAMERA_ROLL);
// you would probably do something to verify that permissions
// are actually granted, but I'm skipping that for brevity
};
useLibraryHandler = async () => {
await this.askPermissionsAsync();
let result = await ImagePicker.launchImageLibraryAsync({
allowsEditing: true,
aspect: [12, 3],
base64: false,
});
console.log(result.width, result.height, "result");
this.setState({ result });
};
useCameraHandler = async () => {
await this.askPermissionsAsync();
let result = await ImagePicker.launchCameraAsync({
allowsEditing: true,
aspect: [12, 3],
base64: false,
});
console.log(result.width, result.height, "result");
this.setState({ result });
};
render() {
return (
<ScrollView style={{flex: 1}} contentContainerStyle={styles.container}>
<Button title="launchCameraAsync" onPress={this.useCameraHandler} />
<Button
title="launchImageLibraryAsync"
onPress={this.useLibraryHandler}
/>
<Text style={styles.paragraph}>
{JSON.stringify(this.state.result)}
</Text>
</ScrollView>
);
}
}