এই পৃষ্ঠাটি বর্ণনা করে কিভাবে CameraX দিয়ে উচ্চ মানের ছবি ক্যাপচার করা যায়। আপনি ImageCapture
ক্লাস এবং এর সাথে সম্পর্কিত পদ্ধতিগুলির সাথে এটি করেন।
মূল ধারণা
এই নথিতে আলোচনা করা প্রাথমিক ধারণাগুলি নিম্নরূপ:
- স্টোরেজ পদ্ধতি : আপনি একটি ইন-মেমরি বাফার বা সরাসরি একটি ফাইলে ছবি ক্যাপচার করতে পারেন।
- নির্বাহক :
ImageCapture
কলব্যাক এবং I/O অপারেশন পরিচালনার জন্য নির্বাহক ব্যবহার করে। আপনি ভাল কর্মক্ষমতা এবং নিয়ন্ত্রণের জন্য এই নির্বাহকদের কাস্টমাইজ করতে পারেন। - ক্যাপচার মোড : আপনি লেটেন্সি বা ইমেজ মানের জন্য অপ্টিমাইজ করতে ক্যাপচার মোড কনফিগার করতে পারেন।
স্টোরেজ পদ্ধতি
ImageCapture
দিয়ে ছবি তোলার দুটি উপায় রয়েছে। তারা প্রত্যেকে ImageCapture.takePicture()
এর ওভারলোড ব্যবহার করে :
ফাইল: ক্যাপচার করা ছবি সরাসরি ডিস্কের একটি ফাইলে সংরক্ষণ করতে
takePicture(OutputFileOptions, Executor, OnImageSavedCallback)
ব্যবহার করুন।- এটি ছবি তোলার সবচেয়ে সাধারণ উপায়।
ইন-মেমরি: ক্যাপচার করা ছবির একটি ইন-মেমরি বাফার পেতে
takePicture(Executor, OnImageCapturedCallback)
ব্যবহার করুন।- এটি রিয়েল-টাইম ইমেজ প্রসেসিং বা বিশ্লেষণের জন্য উপযোগী।
নির্বাহক
আপনি যখন takePicture
কল করেন, তখন আপনি একটি Executor
এবং হয় একটি OnImageCapturedCallback
বা OnImageSavedCallback
ফাংশন পাস করেন। Executor
কলব্যাক চালায় এবং যেকোন ফলাফল আইও পরিচালনা করে।
ছবি তুলুন
একটি ছবি তুলতে, আপনি ক্যামেরা সেট আপ করুন এবং তারপর takePicture
কল করুন৷
ক্যামেরা সেট আপ করুন
ক্যামেরা সেট আপ করতে, একটি CameraProvider
তৈরি করুন। তারপর, একটি ImageCapture
অবজেক্ট তৈরি করুন। ImageCapture.Builder()
ব্যবহার করুন :
কোটলিন
val imageCapture = ImageCapture.Builder()
.setTargetRotation(view.display.rotation)
.build()
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, imageCapture, preview)
জাভা
ImageCapture imageCapture =
new ImageCapture.Builder()
.setTargetRotation(view.getDisplay().getRotation())
.build();
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, imageCapture, preview);
ছবি তুলুন
আপনি ক্যামেরা কনফিগার করার পরে, একটি ছবি ক্যাপচার করতে takePicture()
কল করুন। এই উদাহরণটি প্রদর্শন করে যে কীভাবে একটি ছবি ডিস্কে সংরক্ষণ করতে takePicture()
ব্যবহার করতে হয়:
কোটলিন
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.
}
})
}
জাভা
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 সম্পর্কে আরও জানতে, নিম্নলিখিত সংস্থানগুলি দেখুন: