চিত্র বিটম্যাপ বনাম চিত্র ভেক্টর

দুটি সবচেয়ে সাধারণ ধরণের চিত্র বিন্যাস হল রাস্টার এবং ভেক্টর চিত্র।

একটি রাস্টার গ্রাফিক ফর্ম্যাটে পিক্সেল থাকে: ছোট ছোট পৃথক বর্গক্ষেত্র যা একটি রঙ ধারণ করে (লাল, সবুজ, নীল এবং আলফা মান দিয়ে তৈরি)। অনেকগুলি পিক্সেল একসাথে রাখলে, একটি খুব বিস্তারিত চিত্র তৈরি হতে পারে, যেমন একটি ফটোগ্রাফ। একটি রাস্টার গ্রাফিকের একটি নির্দিষ্ট রেজোলিউশন (পিক্সেলের নির্দিষ্ট সংখ্যা) থাকে। এর অর্থ হল যখন আপনি ছবির আকার বাড়ান, তখন এটি বিশদ হারায় এবং পিক্সেলেশন ঘটতে পারে। রাস্টার গ্রাফিক ফর্ম্যাটের উদাহরণ হল JPEG, PNG এবং WEBP।

একটি গোল্ডেন রিট্রিভার কুকুরের ঘনিষ্ঠ ছবি।
চিত্র ১. JPEG ফাইলের উদাহরণ।

অন্যদিকে, ভেক্টর ছবি হলো স্ক্রিনে একটি ভিজ্যুয়াল এলিমেন্টের স্কেলেবল গাণিতিক উপস্থাপনা। ভেক্টর হলো কমান্ডের একটি সেট যা স্ক্রিনে ছবি কীভাবে আঁকতে হয় তা বর্ণনা করে—যেমন, একটি রেখা, বিন্দু, অথবা পূরণ। ​​স্ক্রিনে একটি ভেক্টরকে স্কেল করার সময়, এটির গুণমান হারাবে না, কারণ গাণিতিক সূত্র বিভিন্ন কমান্ডের মধ্যে সম্পর্ক বজায় রাখে। ImageVector এর ভালো উদাহরণ হল Material Symbols , কারণ এগুলি সবই গাণিতিক সূত্র দিয়ে সংজ্ঞায়িত করা যেতে পারে।

হাতল, ঝুড়ি এবং দুটি চাকা সহ একটি শপিং কার্টের একটি সাধারণ লাইন-আর্ট আইকন।
চিত্র ২. ভেক্টর উদাহরণ (ফাইল এক্সটেনশনগুলি .xml বা কোটলিন কোডে সংজ্ঞায়িত)।

ImageBitmap

কম্পোজে, একটি রাস্টার ইমেজ (প্রায়শই Bitmap নামে পরিচিত) একটি ImageBitmap ইনস্ট্যান্সে লোড করা যেতে পারে এবং একটি BitmapPainter হল স্ক্রিনে বিটম্যাপ আঁকার জন্য দায়ী।

সাধারণ ব্যবহারের ক্ষেত্রে, painterResource() একটি ImageBitmap তৈরি করতে ব্যবহার করা যেতে পারে এবং একটি Painter অবজেক্ট ফেরত দেয় (এই ক্ষেত্রে - একটি BitmapPainter ):

Image(
    painter = painterResource(id = R.drawable.dog),
    contentDescription = stringResource(id = R.string.dog_content_description)
)

যদি আপনার আরও কাস্টমাইজেশনের প্রয়োজন হয় (উদাহরণস্বরূপ, একটি কাস্টম পেইন্টার বাস্তবায়ন ) এবং ImageBitmap এ অ্যাক্সেসের প্রয়োজন হয়, তাহলে আপনি এটি নিম্নলিখিত উপায়ে লোড করতে পারেন:

val imageBitmap = ImageBitmap.imageResource(R.drawable.dog)

ImageVector

একজন VectorPainter একটি ImageVector স্ক্রিনে আঁকার জন্য দায়ী। ImageVector স্কেলেবল ভেক্টর গ্রাফিক্স (SVG) কমান্ডের একটি উপসেট সমর্থন করে। সমস্ত ছবি ভেক্টর হিসেবে উপস্থাপন করা যায় না (উদাহরণস্বরূপ, আপনার ক্যামেরা দিয়ে তোলা ছবিগুলিকে ভেক্টরে রূপান্তর করা যায় না)।

আপনি একটি বিদ্যমান ভেক্টর ড্রয়েবল XML ফাইল ( import tool ব্যবহার করে Android Studio-তে আমদানি করা) আমদানি করে অথবা ক্লাসটি বাস্তবায়ন করে এবং ম্যানুয়ালি পাথ কমান্ড জারি করে একটি কাস্টম ImageVector তৈরি করতে পারেন।

সাধারণ ব্যবহারের ক্ষেত্রে, painterResource() ImageVectors জন্য ঠিক একইভাবে কাজ করে যেমনটি ImageBitmap ক্লাসের ক্ষেত্রে করে, ফলে একটি VectorPainter ফেরত আসে। painterResource() যথাক্রমে VectorDrawables এবং BitmapDrawables VectorPainter এবং BitmapPainter এ লোড করার কাজ পরিচালনা করে। একটি ছবিতে VectorDrawable লোড করতে, ব্যবহার করুন:

Image(
    painter = painterResource(id = R.drawable.baseline_shopping_cart_24),
    contentDescription = stringResource(id = R.string.shopping_cart_content_desc)
)

যদি আপনার আরও কাস্টমাইজেশনের প্রয়োজন হয় এবং ImageVector এ অ্যাক্সেসের প্রয়োজন হয়, তাহলে আপনি এটি নিম্নলিখিত উপায়ে লোড করতে পারেন:

val imageVector = ImageVector.vectorResource(id = R.drawable.baseline_shopping_cart_24)

{% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %} {% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %}