如何使用本机反应从相机胶卷中获取随机图像?
How to fetch random image from camera-roll using react native?
我有一个要求,每次单击按钮时都需要随机获取一张图片。我不希望选择器出现带有图像的相机胶卷,而是应 select 从相机文件夹中编辑随机图像并显示在图像视图中。
我已经按照相机胶卷的官方FB教程进行操作。请找到下面的代码
_handleButtonPress = () => {
CameraRoll.getPhotos({
first: 20,
assetType: 'Photos',
})
.then(r => {
this.setState({ photos: r.edges });
})
.catch((err) => {
});
};
但是此代码将 select 最近点击的图像并显示在选择器中。而不是随机 select 图像的 uri 并显示在图像视图中。感谢任何帮助。
此致,
沙拉斯
设置状态后,您基本上拥有了照片和所有必要的元数据:this.setState({ photos: r.edges })
您所要做的就是从那里随机选择一张图片。这是我的做法:
import React, { Component } from 'react';
import {
StyleSheet,
View,
Image,
CameraRoll,
Button
} from 'react-native';
export default class App extends Component {
constructor(props) {
super(props)
this.state = {
img: null
}
}
getRandomImage = () => {
const fetchParams = {
first: 25,
}
CameraRoll.getPhotos(fetchParams)
.then(data => {
const assets = data.edges
const images = assets.map((asset) => asset.node.image)
const random = Math.floor(Math.random() * images.length)
this.setState({
img: images[random]
})
})
.catch(err => console.log)
}
render() {
return (
<View style={styles.container}>
{ this.state.img ?
<Image
style={styles.image}
source={{ uri: this.state.img.uri }}
/>
: null
}
<Button title="Get Random Image from CameraRoll" onPress={this.getRandomImage}/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
image: {
width: '100%',
height: '75%',
margin: 10,
}
});
我有一个要求,每次单击按钮时都需要随机获取一张图片。我不希望选择器出现带有图像的相机胶卷,而是应 select 从相机文件夹中编辑随机图像并显示在图像视图中。 我已经按照相机胶卷的官方FB教程进行操作。请找到下面的代码
_handleButtonPress = () => {
CameraRoll.getPhotos({
first: 20,
assetType: 'Photos',
})
.then(r => {
this.setState({ photos: r.edges });
})
.catch((err) => {
});
};
但是此代码将 select 最近点击的图像并显示在选择器中。而不是随机 select 图像的 uri 并显示在图像视图中。感谢任何帮助。
此致, 沙拉斯
设置状态后,您基本上拥有了照片和所有必要的元数据:this.setState({ photos: r.edges })
您所要做的就是从那里随机选择一张图片。这是我的做法:
import React, { Component } from 'react';
import {
StyleSheet,
View,
Image,
CameraRoll,
Button
} from 'react-native';
export default class App extends Component {
constructor(props) {
super(props)
this.state = {
img: null
}
}
getRandomImage = () => {
const fetchParams = {
first: 25,
}
CameraRoll.getPhotos(fetchParams)
.then(data => {
const assets = data.edges
const images = assets.map((asset) => asset.node.image)
const random = Math.floor(Math.random() * images.length)
this.setState({
img: images[random]
})
})
.catch(err => console.log)
}
render() {
return (
<View style={styles.container}>
{ this.state.img ?
<Image
style={styles.image}
source={{ uri: this.state.img.uri }}
/>
: null
}
<Button title="Get Random Image from CameraRoll" onPress={this.getRandomImage}/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
image: {
width: '100%',
height: '75%',
margin: 10,
}
});