इमेज बिटमैप बनाम इमेज वेक्टर

इमेज फ़ॉर्मैट की दो सबसे आम तरह की इमेज, रास्टर और वेक्टर इमेज होती हैं.

रास्टर ग्राफ़िक फ़ॉर्मैट में पिक्सल होते हैं. ये छोटे-छोटे अलग-अलग स्क्वेयर होते हैं, जिनमें कोई रंग होता है. यह रंग, लाल, हरे, नीले, और अल्फ़ा वैल्यू से मिलकर बनता है. कई पिक्सल को एक साथ रखने पर, बहुत ज़्यादा जानकारी वाली इमेज बनाई जा सकती है. जैसे, कोई फ़ोटो. रास्टर ग्राफ़िक का रिज़ॉल्यूशन तय होता है. इसका मतलब है कि इसमें पिक्सल की संख्या तय होती है. इसका मतलब है कि इमेज का साइज़ बढ़ाने पर, उसकी जानकारी कम हो जाती है और पिक्सलेशन हो सकता है. JPEG, PNG, और WEBP, रास्टर ग्राफ़िक फ़ॉर्मैट के उदाहरण हैं.

गोल्डन रिट्रीवर नस्ल के कुत्ते की क्लोज़-अप फ़ोटो.
पहली इमेज. JPEG फ़ाइल का उदाहरण.

दूसरी ओर, वेक्टर इमेज, स्क्रीन पर दिखने वाले किसी एलिमेंट का स्केलेबल गणितीय प्रतिनिधित्व होती हैं. वेक्टर, कमांड का एक सेट होता है. इससे पता चलता है कि स्क्रीन पर इमेज कैसे बनानी है. जैसे, लाइन, पॉइंट या फ़िल. स्क्रीन पर वेक्टर को स्केल करने पर, उसकी क्वालिटी कम नहीं होती. इसकी वजह यह है कि गणितीय फ़ॉर्मूला, अलग-अलग कमांड के बीच के संबंध को बनाए रखता है. ImageVector के अच्छे उदाहरण, मटीरियल सिंबल हैं. ऐसा इसलिए, क्योंकि इन सभी को गणितीय फ़ॉर्मूले से तय किया जा सकता है.

यह शॉपिंग कार्ट का एक सामान्य लाइन-आर्ट आइकॉन है. इसमें हैंडल, बास्केट, और दो पहिए हैं.
दूसरी इमेज. वेक्टर का उदाहरण. फ़ाइल एक्सटेंशन .xml होते हैं या इन्हें Kotlin कोड में तय किया जाता है.

ImageBitmap

Compose में, रास्टर इमेज को 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, स्केलेबल वेक्टर ग्राफ़िक्स (एसवीजी) कमांड के सबसेट के साथ काम करता है. सभी इमेज को वेक्टर के तौर पर नहीं दिखाया जा सकता. उदाहरण के लिए, कैमरे से ली गई फ़ोटो को वेक्टर में नहीं बदला जा सकता.

कस्टम ImageVector बनाने के लिए, मौजूदा vector drawable एक्सएमएल फ़ाइल इंपोर्ट करें. इसे import tool का इस्तेमाल करके Android Studio में इंपोर्ट किया जाता है. इसके अलावा, क्लास लागू करके और पाथ कमांड मैन्युअल तरीके से जारी करके भी इसे बनाया जा सकता है.

सामान्य इस्तेमाल के लिए, 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)