इमेज कैप्चर करना

इस पेज पर, CameraX की मदद से अच्छी क्वालिटी की इमेज कैप्चर करने का तरीका बताया गया है. ऐसा करने के लिए, ImageCapture क्लास और उससे जुड़े तरीकों का इस्तेमाल करें.

खास कॉन्सेप्ट

इस दस्तावेज़ में इन मुख्य कॉन्सेप्ट के बारे में बताया गया है:

  • स्टोरेज का तरीका: इमेज को मेमोरी में बफ़र में या सीधे किसी फ़ाइल में कैप्चर किया जा सकता है.
  • एग्ज़ीक्यूटर: ImageCapture, कॉलबैक और I/O ऑपरेशन को मैनेज करने के लिए एग्ज़ीक्यूटर का इस्तेमाल करता है. बेहतर परफ़ॉर्मेंस और कंट्रोल के लिए, इन एक्सीक्यूटर को पसंद के मुताबिक बनाया जा सकता है.
  • कैप्चर मोड: कैप्चर मोड को कॉन्फ़िगर करके, रिस्पॉन्स में लगने वाले समय या इमेज क्वालिटी को ऑप्टिमाइज़ किया जा सकता है.

स्टोरेज का तरीका

ImageCapture की मदद से इमेज कैप्चर करने के दो तरीके हैं. वे सभी ImageCapture.takePicture() के ओवरलोड का इस्तेमाल करते हैं:

  • फ़ाइल: कैप्चर की गई इमेज को सीधे डिस्क पर मौजूद किसी फ़ाइल में सेव करने के लिए, takePicture(OutputFileOptions, Executor, OnImageSavedCallback) का इस्तेमाल करें.

    • फ़ोटो खींचने का यह सबसे सामान्य तरीका है.
  • मेमोरी में: कैप्चर की गई इमेज का मेमोरी में बफ़र पाने के लिए, takePicture(Executor, OnImageCapturedCallback) का इस्तेमाल करें.

    • यह रीयल-टाइम में इमेज प्रोसेस करने या उसका विश्लेषण करने के लिए काम का है.

Executors

takePicture को कॉल करने पर, Executor और OnImageCapturedCallback या OnImageSavedCallback फ़ंक्शन पास किया जाता है. Executor, कॉलबैक को चलाता है और उससे होने वाले किसी भी आईओ को हैंडल करता है.

फ़ोटो लें

फ़ोटो लेने के लिए, कैमरे को सेट अप करें और फिर takePicture को कॉल करें.

कैमरा सेट अप करना

कैमरा सेट अप करने के लिए, CameraProvider बनाएं. इसके बाद, एक ImageCapture ऑब्जेक्ट बनाएं. ImageCapture.Builder() का इस्तेमाल करें:

Kotlin

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

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

Java

ImageCapture imageCapture =
    new ImageCapture.Builder()
        .setTargetRotation(view.getDisplay().getRotation())
        .build();

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

तस्वीर खींचो

कैमरे को कॉन्फ़िगर करने के बाद, इमेज कैप्चर करने के लिए takePicture() बोलें. इस उदाहरण में, डिस्क पर इमेज सेव करने के लिए takePicture() का इस्तेमाल करने का तरीका बताया गया है:

Kotlin

fun onClick() {
    val outputFileOptions = ImageCapture.OutputFileOptions.Builder(File(...)).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.
            }
        })
}

Java

public void onClick() {
    ImageCapture.OutputFileOptions outputFileOptions =
            new ImageCapture.OutputFileOptions.Builder(new File(...)).build();
    imageCapture.takePicture(outputFileOptions, cameraExecutor,
        new ImageCapture.OnImageSavedCallback() {
            @Override
            public void onImageSaved(ImageCapture.OutputFileResults outputFileResults) {
                // insert your code here.
            }
            @Override
            public void onError(ImageCaptureException error) {
                // insert your code here.
            }
       }
    );
}

इस स्निपेट के बारे में अहम बातें यहां दी गई हैं:

  • ImageCapture.OutputFileOptions की मदद से, सेव की गई जगह और मेटाडेटा को कॉन्फ़िगर किया जा सकता है.
    • यहां OutputFileOptions.Builder(), सेव करने की जगह तय करने के लिए File ऑब्जेक्ट का इस्तेमाल करता है.
  • takePicture() फ़ंक्शन, दिए गए विकल्पों और एक्ज़ीक्यूटर का इस्तेमाल करके, इमेज को अलग-अलग समय पर कैप्चर करता है.
  • OnImageSavedCallback, सदस्यता लिंक हो जाने और न हो पाने की स्थिति में कॉलबैक उपलब्ध कराता है.
    • onImageSaved() कॉलबैक, इमेज कैप्चर करने की प्रोसेस को मैनेज करता है और सेव की गई इमेज के नतीजों का ऐक्सेस देता है.
    • onError() कॉलबैक, इमेज कैप्चर करने से जुड़ी गड़बड़ियों को मैनेज करता है.

अन्य विकल्प

ImageCapture को कॉन्फ़िगर करने के अन्य तरीकों के बारे में जानने के लिए, ऑप्टिमाइज़ेशन, फ़्लैश, और फ़ाइल फ़ॉर्मैट के लिए कॉन्फ़िगर करें गाइड देखें.

अतिरिक्त संसाधन

CameraX के बारे में ज़्यादा जानने के लिए, यहां दिए गए संसाधन देखें:

कोडलैब (कोड बनाना सीखना)

  • CameraX का इस्तेमाल शुरू करना
  • कोड का सैंपल

  • CameraX के सैंपल ऐप्लिकेशन