【React Native】文件翻譯閱讀紀錄 - APIs - CameraRoll

by - 上午9:00

Facebook Open Source React Native

CameraRoll


CameraRoll提供對本地相機膠卷或照片庫的訪問。


在iOS上,CameraRoll API需要鏈接RCTCameraRoll庫。您可以參考 Linking Libraries (iOS)以了解更多信息。

權限

要在運行iOS 10或更高版本的設備上訪問“相機膠卷”,需要用戶的許可。在Info.plist中添加NSPhotoLibraryUsageDescription鍵,其中包含一個描述您的應用將如何使用此數據的字符串。此密鑰將在Xcode中顯示為隱私 - 照片庫使用說明。

如果您要定位運行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。
參數:
NAMETYPEREQUIREDDESCRIPTION
tagstringYesSee above.
typeenum('photo', 'video')NoOverrides automatic detection based on the file extension.

getPhotos()

CameraRoll.getPhotos(params);
返回帶有照片標識符對象的 Promise,該照片標識符對象來自與 getPhotosReturnChecker 定義的匹配形狀的設備的本地相機膠卷。
參數:
NAMETYPEREQUIREDDESCRIPTION
paramsobjectYes預期具有下述形狀的參數。
  • 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>
 );
}



You May Also Like

0 意見