
1. Métodos
1.1. ImagePicker.getCameraPermissionsAsync()
1.1.1. Verifica as permissões do usuário para acessar a câmera.
1.2. ImagePicker.getMediaLibraryPermissionsAsync(writeOnly)
1.2.1. Verifica as permissões do usuário para acessar as fotos.
1.3. ImagePicker.getPendingResultAsync()
1.3.1. O sistema Android às vezes mata o MainActivity após o término ImagePicker. Quando isso acontece, perdemos os dados selecionados do arquivo ImagePicker. E para recuperar esses dados chamamos o getPendingResultAsync
1.4. ImagePicker.launchCameraAsync(options)
1.4.1. Exiba a IU do sistema para tirar uma foto com a câmera. Requer Permissions.CAMERA. No Android e iOS 10 Permissions.CAMERA_ROLLtambém é necessário.
1.5. ImagePicker.launchImageLibraryAsync(options)
1.5.1. Exiba a interface do usuário do sistema para escolher uma imagem ou um vídeo da biblioteca do telefone. Requer Permissions.MEDIA_LIBRARYapenas no iOS 10.
1.6. ImagePicker.requestCameraPermissionsAsync()
1.6.1. Pede ao usuário para conceder permissões para acessar a câmera. Isso não faz nada na web porque a câmera do navegador não é usada.
1.7. ImagePicker.requestMediaLibraryPermissionsAsync()
1.7.1. Pede ao usuário para conceder permissões para acessar a foto do usuário. Este método não faz nada na web.
2. API
2.1. import * as ImagePicker from 'expo-image-picker';
3. Interfaces
4. PermissionResponse
4.1. .canAskAgain
4.1.1. Indica se o usuário pode ser solicitado novamente para permissão específica. Caso contrário, deve-se direcionar para o aplicativo Configurações para habilitar/desabilitar a permissão.
4.2. .expires
4.2.1. Determina a hora em que a permissão expira.
4.3. .granted
4.3.1. Um boolean de conveniência que indica se a permissão foi concedida.
4.4. .status
4.4.1. Determina o status da permissão.
5. Tipos
5.1. CameraPermissionResponse
5.1.1. Alias para PermissionResponseo tipo exportado por expo-modules-core.
5.2. ImagePickerAsset
5.2.1. Representa um ativo (imagem ou vídeo) retornado pelo seletor de imagem ou câmera.
5.3. ImagePickerErrorResult
5.4. ImagePickerOptions
5.5. ImagePickerResult
5.6. MediaLibraryPermissionResponse
5.6.1. Estende PermissionResponseo tipo exportado por expo-modules-coree contém campo adicional específico do iOS.
5.7. OpenFileBrowserOptions
5.8. PermissionExpiration
5.8.1. Tempo de expiração da permissão. Atualmente, todas as permissões são concedidas permanentemente.
5.9. PermissionHookOptions
6. Instalação
6.1. npx expo install expo-image-picker
7. Exemplo app.json com configuração plugin
7.1. { "expo": { "plugins": [ [ "expo-image-picker", { "photosPermission": "The app accesses your photos to let you share them with your friends." } ] ] } }
8. configurações para IOS
8.1. photosPermission
8.2. cameraPermission
8.3. microphonePermission
9. Código exemplo
9.1. import React, { useState, useEffect } from 'react'; import { Button, Image, View, Platform } from 'react-native'; import * as ImagePicker from 'expo-image-picker';
9.2. export default function ImagePickerExample() { const [image, setImage] = useState(null); const pickImage = async () => { // No permissions request is necessary for launching the image library let result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.All, allowsEditing: true, aspect: [4, 3], quality: 1, });
9.3. console.log(result); if (!result.canceled) { setImage(result.assets[0].uri); } }; return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Button title="Pick an image from camera roll" onPress={pickImage} /> {image && <Image source={{ uri: image }} style={{ width: 200, height: 200 }} />} </View> ); }
10. Depois de rodar, isso aparecerá no console
10.1. { "assets": [ { "assetId": "C166F9F5-B5FE-4501-9531", "base64": null, "duration": null, "exif": null, "fileName": "IMG.HEIC", "fileSize": 6018901, "height": 3025, "type": "image", "uri": "file:///data/user/0/host.exp.exponent/cache/cropped1814158652.jpg" "width": 3024 } ], "canceled": false, "cancelled": false }
11. Enums
11.1. MediaTypeOptions
11.1.1. .All
11.1.2. .Images
11.1.3. .Videos
11.2. PermissionStatus
11.2.1. .DENIED
11.2.1.1. O usuário negou a permissão.
11.2.2. .GRANTED
11.2.2.1. O usuário concedeu a permissão.
11.2.3. .UNDETERMINED
11.2.3.1. O usuário ainda não concedeu ou negou a permissão.
11.3. UIImagePickerControllerQualityType
11.3.1. .High
11.3.1.1. Maior resolução disponível.
11.3.2. .Medium
11.3.2.1. Depende do dispositivo.
11.3.3. .Low
11.3.3.1. Depende do dispositivo.
11.4. UIImagePickerPresentationStyle(apenas IOS)
11.4.1. .Automatic
11.4.1.1. O estilo de apresentação padrão escolhido pelo sistema. Em versões mais antigas do iOS, volta para WebBrowserPresentationStyle.FullScreen.
11.4.2. .CurrentContext
11.4.3. .FormSheet
11.4.4. .FullScreen
11.4.5. .OverCurrentContext
11.4.6. .OverFullScreen
11.4.7. .PageSheet
11.4.8. .Popover
11.5. VideoExportPreset
12. Permissões
12.1. Android
12.1.1. CAMERA
12.1.1.1. Necessário para poder acessar o dispositivo da câmera.
12.1.2. READ_EXTERNAL_STORAGE
12.1.2.1. Permite que um aplicativo leia do armazenamento externo.
12.1.3. WRITE_EXTERNAL_STORAGE
12.1.3.1. Permite que um aplicativo grave em um armazenamento externo.
12.2. IOS
12.2.1. NSMicrophoneUsageDescription
12.2.1.1. Uma mensagem que informa ao usuário por que o aplicativo está solicitando acesso ao microfone do dispositivo.
12.2.2. NSPhotoLibraryUsageDescription
12.2.2.1. Uma mensagem que informa ao usuário por que o aplicativo está solicitando acesso à biblioteca de fotos do usuário.
12.2.3. NSCameraUsageDescription
12.2.3.1. Uma mensagem que informa ao usuário por que o aplicativo está solicitando acesso à câmera do dispositivo.