Fotoğraf çekme

Bu sayfada, CameraX ile yüksek kaliteli görüntülerin nasıl yakalanacağı açıklanmaktadır. Bu işlemi ImageCapture sınıfı ve ilişkili yöntemleriyle yaparsınız.

Temel kavramlar

Bu belgede ele alınan temel kavramlar şunlardır:

  • Depolama yöntemi: Görüntüleri bellek içi arabelleğe veya doğrudan bir dosyaya kaydedebilirsiniz.
  • Yürütücüler: ImageCapture, geri çağırma ve G/Ç işlemlerini yönetmek için yürütücüleri kullanır. Daha iyi performans ve kontrol için bu yürütücüleri özelleştirebilirsiniz.
  • Çekim Modları: Çekim modunu, gecikme veya görüntü kalitesi için optimizasyon yapacak şekilde yapılandırabilirsiniz.

Depolama yöntemi

ImageCapture ile görüntü yakalamanın iki yolu vardır. Her biri ImageCapture.takePicture() aşırı yüklemesini kullanır:

Yürütücüler

takePicture işlevini çağırdığınızda bir Executor ve OnImageCapturedCallback veya OnImageSavedCallback işlevini geçirirsiniz. Executor geri çağırmayı çalıştırır ve ortaya çıkan G/Ç'yi işler.

Fotoğraf çek

Fotoğraf çekmek için kamerayı kurup takePicture'ı ararsınız.

Kamerayı kurma

Kamerayı kurmak için CameraProvider oluşturun. Ardından bir ImageCapture nesnesi oluşturun. ImageCapture.Builder() kullanın:

val imageCapture = ImageCapture.Builder()
    .setTargetRotation(view.display.rotation)
    .build()

cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, imageCapture, preview)

Yapılandırma seçenekleri kılavuzuna bakın.

Resim çek

Kamerayı yapılandırdıktan sonra görüntü yakalamak için takePicture() tuşuna basın. Bu örnekte, bir resmi diske kaydetmek için takePicture()'ın nasıl kullanılacağı gösterilmektedir:

fun onClick() {
    val outputFileOptions = ImageCapture.OutputFileOptions.Builder(File("photo.jpg")).build()
    imageCapture.takePicture(
        outputFileOptions, cameraExecutor,
        object : ImageCapture.OnImageSavedCallback {
            override fun onError(error: ImageCaptureException) {
                // Insert your code here
            }
            override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
                // Insert your code here
            }
        }
    )
}

Bu snippet ile ilgili önemli noktalar şunlardır:

  • ImageCapture.OutputFileOptions simgesi, kaydetme konumunu ve meta verileri yapılandırmanıza olanak tanır.
    • Burada OutputFileOptions.Builder(), kaydetme konumunu belirlemek için File nesnesini kullanır.
  • takePicture() işlevi, sağlanan seçenekleri ve yürütücüyü kullanarak görüntüyü eşzamansız olarak yakalar.
  • OnImageSavedCallback, başarı ve başarısızlık için geri çağırmalar sağlar.
    • onImageSaved() geri çağırma işlevi, başarılı görüntü yakalamayı işler ve kaydedilen görüntü sonuçlarına erişim sağlar.
    • onError() geri çağırma işlevi, resim yakalama hatalarını işler.

Ek seçenekler

ImageCapture öğesini yapılandırabileceğiniz diğer yöntemler için Optimizasyon, Flash ve dosya biçimi için yapılandırma kılavuzu'na bakın.

Diğer kaynaklar

CameraX hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları inceleyin:

Codelab

  • CameraX'i Kullanmaya Başlama
  • Kod örneği

  • CameraX örnek uygulamaları