ইমেজবিটম্যাপ বনাম ইমেজভেক্টর

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

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

JPEG ফাইলের উদাহরণ
চিত্র 1 : JPEG ফাইলের উদাহরণ

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

ভেক্টর উদাহরণ (ফাইল এক্সটেনশনগুলি .xml বা কোটলিন কোডে সংজ্ঞায়িত)
চিত্র 2 : ভেক্টর উদাহরণ (ফাইল এক্সটেনশনগুলি .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 ফাইল আমদানি করে ( ইমপোর্ট টুল ব্যবহার করে অ্যান্ড্রয়েড স্টুডিওতে আমদানি করা হয়েছে) অথবা ক্লাস বাস্তবায়ন করে এবং ম্যানুয়ালি পাথ কমান্ড জারি করে একটি কাস্টম ImageVector তৈরি করতে পারেন।

সাধারণ ব্যবহারের ক্ষেত্রে, ImageBitmap ক্লাসের জন্য যেভাবে painterResource() কাজ করে, একইভাবে এটি ImageVectors জন্যও কাজ করে, ফলাফল হিসাবে একটি VectorPainter ফেরত দেয়। painterResource() যথাক্রমে VectorPainter এবং BitmapPainterVectorDrawables এবং BitmapDrawables এর লোডিং পরিচালনা করে। একটি ছবিতে একটি 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)

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}