שני הסוגים הנפוצים ביותר של פורמטים של תמונות הם תמונות רסטר ותמונות וקטוריות.
פורמט גרפי של רסטר מכיל פיקסלים: ריבועים קטנים נפרדים שמכילים צבע (שמורכב מערכי אדום, ירוק, כחול ואלפא). כשממקמים יחד הרבה פיקסלים, אפשר ליצור תמונה מפורטת מאוד, כמו צילום. לגרפיקת רסטר יש רזולוציה קבועה (מספר קבוע של פיקסלים). המשמעות היא שכשמגדילים את התמונה, הפרטים מתבטלים ועשויה להופיע מפוקסלות. דוגמאות לפורמטים גרפיים רסטר הם JPEG, PNG ו-WEBP.
לעומת זאת, תמונות וקטוריות הן ייצוגים מתמטיים שניתן לשנות את הגודל שלהם של אלמנט חזותי במסך. וקטור הוא קבוצת פקודות שמתארות איך לצייר את התמונה במסך – למשל, קו, נקודה או מילוי. כשמשנים את קנה המידה של וקטור במסך, האיכות לא נפגעת כי הנוסחה המתמטית שומרת על היחס בין הפקודות השונות. דוגמה טובה ל-ImageVector היא סמלי Material, כי אפשר להגדיר את כולם באמצעות נוסחאות מתמטיות.
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. לא כל התמונות יכולות להיחשב כוקטור (לדוגמה, אי אפשר להפוך תמונות שצילמתם במצלמה לוקטור).
אפשר ליצור ImageVector
מותאם אישית על ידי ייבוא קובץ XML קיים של רכיב גרפי וקווי (שמייבאים ל-Android Studio באמצעות כלי הייבוא) או על ידי הטמעת הכיתה והנפקת פקודות נתיב באופן ידני.
בתרחישי שימוש פשוטים, באותו אופן שבו painterResource()
פועל בכיתה ImageBitmap
, הוא פועל גם ב-ImageVectors
, וכתוצאה מכך מוחזר 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)
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- Custom painter {:#custom-painter}
- משאבים ב-Compose
- Loading images {:#loading-images}