【React Native】文件翻譯閱讀紀錄 - APIs - CameraRoll
Facebook Open Source React Native |
CameraRoll提供對本地相機膠卷或照片庫的訪問。
在iOS上,CameraRoll API需要鏈接RCTCameraRoll庫。您可以參考 Linking Libraries (iOS)以了解更多信息。
權限
要在運行iOS 10或更高版本的設備上訪問“相機膠卷”,需要用戶的許可。在Info.plist中添加NSPhotoLibraryUsageDescription鍵,其中包含一個描述您的應用將如何使用此數據的字符串。此密鑰將在Xcode中顯示為隱私 - 照片庫使用說明。
如果您要定位運行iOS 11或更高版本的設備,則還需要在Info.plist中添加NSPhotoLibraryAddUsageDescription鍵。使用此鍵定義一個字符串,該字符串描述您的應用將如何使用此數據。通過將此密鑰添加到Info.plist,您將能夠請求用戶的只寫訪問權限。如果您在未經此許可的情況下嘗試保存到相機膠卷,您的應用將退出。
如果您要定位運行iOS 11或更高版本的設備,則還需要在Info.plist中添加NSPhotoLibraryAddUsageDescription鍵。使用此鍵定義一個字符串,該字符串描述您的應用將如何使用此數據。通過將此密鑰添加到Info.plist,您將能夠請求用戶的只寫訪問權限。如果您在未經此許可的情況下嘗試保存到相機膠卷,您的應用將退出。
Methods
參考
Methods
saveToCameraRoll()
CameraRoll.saveToCameraRoll(tag, [type]);
將照片或視頻保存到相機膠卷或照片庫。
在Android上,標記必須是本地圖像或視頻URI,例如“file:///sdcard/img.png”。
在iOS上,標記可以是任何圖像URI(包括本地,遠程資產庫和base64數據URI)或本地視頻文件URI(此時不支持遠程或數據URI用於保存視頻)。
如果標記的文件擴展名為.mov或.mp4,則會將其推斷為視頻。否則它將被視為照片。要覆蓋自動選擇,您可以傳遞必須是“照片”或“視頻”之一的可選類型參數。
返回將使用新URI解析的 Promise。
在Android上,標記必須是本地圖像或視頻URI,例如“file:///sdcard/img.png”。
在iOS上,標記可以是任何圖像URI(包括本地,遠程資產庫和base64數據URI)或本地視頻文件URI(此時不支持遠程或數據URI用於保存視頻)。
如果標記的文件擴展名為.mov或.mp4,則會將其推斷為視頻。否則它將被視為照片。要覆蓋自動選擇,您可以傳遞必須是“照片”或“視頻”之一的可選類型參數。
返回將使用新URI解析的 Promise。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
tag | string | Yes | See above. |
type | enum('photo', 'video') | No | Overrides automatic detection based on the file extension. |
getPhotos()
CameraRoll.getPhotos(params);
返回帶有照片標識符對象的 Promise,該照片標識符對象來自與 getPhotosReturnChecker 定義的匹配形狀的設備的本地相機膠卷。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
params | object | Yes | 預期具有下述形狀的參數。 |
first
: {number} : 按照照片應用程序的相反順序想要的照片數量(即最近的第一個用於SavedPhotos的照片)。after
: {string} : 與之前調用getPhotos返回的page_info {end_cursor}匹配的游標。groupTypes
: {string} : 指定要將結果過濾到的組類型。有效值為:Album
All
Event
Faces
Library
PhotoStream
SavedPhotos
// default
groupName
: {string} : 指定對組名稱的過濾,例如“最近的照片”或自定義相冊標題。assetType
: {string} : 指定資產類型的過濾器。有效值為:All
Videos
Photos
// default
mimeTypes
: {Array} : 按mimetype過濾(例如image / jpeg)。
當解析時它將具有以下形狀:
edges
: {Array} 節點對象的數組 node
: {object} 具有以下形狀的對象:type
: {string}group_name
: {string}image
: {object} : 具有以下形狀的對象:uri
: {string}height
: {number}width
: {number}isStored
: {boolean}playableDuration
: {number}
timestamp
: {number}location
: {object} : 具有以下形狀的對象:latitude
: {number}longitude
: {number}altitude
: {number}heading
: {number}speed
: {number}
page_info
: {object} : 具有以下形狀的對象:has_next_page
: {boolean}start_cursor
: {string}end_cursor
: {string}
範例
加載圖片:
_handleButtonPress = () => {
CameraRoll.getPhotos({
first: 20,
assetType: 'Photos',
})
.then(r => {
this.setState({ photos: r.edges });
})
.catch((err) => {
//Error Loading Images
});
};
render() {
return (
<View>
<Button title="Load Images" onPress={this._handleButtonPress} />
<ScrollView>
{this.state.photos.map((p, i) => {
return (
<Image
key={i}
style={{
width: 300,
height: 100,
}}
source={{ uri: p.node.image.uri }}
/>
);
})}
</ScrollView>
</View>
);
}
0 意見