
Как захватить и выбирать изображения в JetPack Compose и KMP с ImagePickerkmp
31 июля 2025 г.Если вы строите приложения, используя многоплатформу Kotlin или JetPack Compose - и вам нужно сфотографировать или выбрать изображения из галереи -ImagePickerkmpэто библиотека, которую вы ждали.
Он легко работает на Android и iOS, поддерживает как JetPack Compose Multiplatform, так и Android, и дает вам полный контроль над доступом к камере, выбору галереи и настройке пользовательского интерфейса.
Что такое ImagePickErkmp?
ImagePickerkmpЯвляется ли многоплатформенная библиотека с открытым исходным котлом, которая позволяет вам:
- Запустите камеру устройства с помощью флэш -переключателя, переднего/заднего переключателя и предварительного просмотра изображения
- Откройте галерею с поддержкой для одиночного или множественного выбора
- Обрабатывать разрешения и доступ к фото на Android и iOS без хлопот
- Настроить диалоги подтверждения и компоненты пользовательского интерфейса (при необходимости)
- Используйте один и тот же API в Compose Multiplatform и Android Native
Он построен для разработчиков, которые хотят простоты, гибкости и истинного многоплатформенного поведения.
Использование ImagePickerkMP в Kotlin Multiplatform / Compose Multiplatform
Шаг 1: Добавьте зависимость
В вашемcommonMain
build.gradle.kts
:
implementation("io.github.ismoy:imagepickerkmp:1.0.1")
Не забудьте настроить iOS-специфические разрешения в вашем файле info.plist:
<key>NSCameraUsageDescription</key>
<string>We need access to the camera to capture a photo.</string>
Шаг 2: запустите камеру
var showCamera by remember { mutableStateOf(false) }
var capturedPhoto by remember { mutableStateOf<CameraPhotoHandler.PhotoResult?>(null) }
if (showCamera) {
ImagePickerLauncher(
context = context, // Take a context in your App.kt
config = ImagePickerConfig(
onPhotoCaptured = { result ->
capturedPhoto = result
showCamera = false
},
onError = {
showCamera = false
}
)
)
}
Button(onClick = { showCamera = true }) {
Text("Take Photo")
}
Шаг 3: Выберите из галереи
var showGallery by remember { mutableStateOf(false) }
var selectedImages by remember { mutableStateOf<List<GalleryPhotoHandler.PhotoResult>>(emptyList()) }
if (showGallery) {
GalleryPickerLauncher(
context = context, // Take a context in your App.kt
onPhotosSelected = { photos ->
selectedImages = photos
showGallery = false
},
onError = { error ->
showGallery = false
},
allowMultiple = true, // False for single selection
mimeTypes = listOf("image/jpeg", "image/png") // Optional: filter by type
)
}
Button(onClick = { showGallery = true }) {
Text("Choose from Gallery")
}
Для получения дополнительной настройки (просмотры подтверждения, фильтрации MIME и т. Д.),Проверьте руководство по интеграции для KMP.
Использование ImagePickerkMP в Android Native (JetPack Compose)
Даже если вы не используете KMP, вы можете использовать ImagePickerkMP в Pure Android Projects с JetPack Compose.
Шаг 1: Добавьте зависимость
implementation("io.github.ismoy:imagepickerkmp:1.0.1")
Шаг 2: Пример запуска камеры
var showCamera by remember { mutableStateOf(false) }
var capturedPhoto by remember { mutableStateOf<CameraPhotoHandler.PhotoResult?>(null) }
val context = LocalContext.current
if (showCamera) {
ImagePickerLauncher(
context = context,
config = ImagePickerConfig(
onPhotoCaptured = { result ->
capturedPhoto = result
showCamera = false
},
onError = {
showCamera = false
}
)
)
}
Button(onClick = { showCamera = true }) {
Text("Take Photo")
}
Шаг 3: Пример сборщика галереи
var showGallery by remember { mutableStateOf(false) }
var selectedImages by remember { mutableStateOf<List<GalleryPhotoHandler.PhotoResult>>(emptyList()) }
val context = LocalContext.current
if (showGallery) {
GalleryPickerLauncher(
context = context,
onPhotosSelected = { photos ->
selectedImages = photos
showGallery = false
},
onError = { error ->
showGallery = false
},
allowMultiple = true, // False for single selection
mimeTypes = listOf("image/jpeg", "image/png") // Optional: filter by type
)
}
Button(onClick = { showGallery = true }) {
Text("Choose from Gallery")
}
УвидетьРуководство по интеграции Android нативноеДля получения дополнительной информации об использовании.
Зачем его использовать?
- Один API для Android и iOS
- Нативный пользовательский интерфейс и обработка разрешений под капюшоном
- Отлично работает с проектами JetPack Compose и Multiplatform
- Открытый исходный код, лицензированный MIT и активно поддерживаемые Final Monds ImagePickerkMP-это универсальное и простое в интегральном решении, которое удаляет боль выбора изображений на разных платформах. Независимо от того, используете ли вы мультиплатформ Kotlin или просто разрабатываете для Android, он покрывает вас - с современным API и полной поддержкой. Используйте его, расширяйте и сделайте его своим.
Репозиторий GitHub
Оригинал