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