眾所周知,iPhone的相冊是一個保存了用戶照片和視頻的重要工具,如果你想實現網站或應用能夠訪問用戶的相冊,那么你需要使用JavaScript的API來實現該功能。
接下來我們將會介紹一些方式,來讓JavaScript獲取iPhone的相冊。
使用原生JavaScript代碼實現獲取相冊
var input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*'; input.capture = 'camera'; input.onchange = function (e) { var file = e.target.files[0]; console.log(file); }; input.click();
這段代碼,可以讓我們在iPhone上打開相冊或拍照器件,然后允許我們選擇一個照片或視頻來上傳。但由于iPhone的一些限制,這種方式無法直接獲取相冊的的照片、視頻文件。
使用PhoneGap
如果你正在使用PhoneGap,可以直接使用它的插件來獲取相冊:cordova-plugin-camera,它在你的應用中提供了所有的相機和相冊功能,你只需要在你的html中調用代碼即可:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL }); function onSuccess(imageData) { var image = document.getElementById('myImage'); image.src = "data:image/jpeg;base64," + imageData; } function onFail(message) { alert('Failed because: ' + message); }
這個方式使你能夠輕松地獲取照片,甚至能在獲取照片之后上傳到云存儲或你的服務器上。
使用React Native
如果你正在使用React Native,你可以通過使用相應的組件來獲取相冊。
import React from 'react'; import {View, Text, TouchableOpacity, StyleSheet, Image, Platform, PermissionsAndroid} from 'react-native'; import ImagePicker from 'react-native-image-picker'; import CameraRoll from "@react-native-community/cameraroll"; const options = { title: '選擇圖片', storageOptions: { skipBackup: true, path: 'images', }, }; export default class App extends React.Component { constructor(props){ super(props) this.state = { imageURI: '' } } getImageGallery = async() =>{ const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE, { title: 'My App Storage Permission', message: 'My App needs access to your storage ' + 'so you can save your photos', buttonNeutral: 'Ask Me Later', buttonNegative: 'Cancel', buttonPositive: 'OK', }, ); if (granted === PermissionsAndroid.RESULTS.GRANTED) { ImagePicker.launchImageLibrary(options, (response) =>{ console.log('Response = ', response); if (response.didCancel) { console.log('User cancelled image picker'); } else if (response.error) { console.log('ImagePicker Error: ', response.error); } else if (response.customButton) { console.log('User tapped custom button: ', response.customButton); } else { const source = { uri: response.uri }; this.setState({ imageURI: source }); } }); } else { console.log('Camera permission denied'); } }; render() { return (); } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, }); APP this.getImageGallery()}> {this.state.imageURI !== '' &&PICK FROM GALLERY }
使用React Native處理相冊能夠輕松地在iOS系統中獲取設備圖庫的圖片文件。
結語:
盡管現在JavaScript獲取iPhone相冊還存在一些限制,但隨著技術的不斷發展,相信我們很快就可以實現JavaScript獲取iPhone的相冊,從而為用戶帶來更好的體驗。