Resim bit eşlemi ve resim vektörü karşılaştırması

En yaygın iki resim biçimi türü, raster ve vektörel görüntülerdir.

Raster grafik biçimi, pikseller içerir. Pikseller, renk içeren (kırmızı, yeşil, mavi ve alfa değerlerinden oluşan) küçük karelerdir. Çok sayıda piksel bir araya getirildiğinde fotoğraf gibi çok ayrıntılı bir görüntü oluşturulabilir. Raster grafiklerin çözünürlüğü sabittir (sabit sayıda piksel). Bu, resmin boyutunu artırdığınızda ayrıntıların kaybolacağı ve piksellenme olabileceği anlamına gelir. JPEG, PNG ve WEBP, raster grafik biçimlerine örnek olarak verilebilir.

Golden retriever cinsi bir köpeğin yakın çekim fotoğrafı.
Şekil 1. JPEG dosyası örneği.

Vektörel görüntüler ise ekrandaki görsel öğelerin ölçeklenebilir matematiksel temsilleridir. Vektör, görüntünün ekranda nasıl çizileceğini açıklayan bir dizi komuttur (ör. çizgi, nokta veya dolgu). Ekranda bir vektörü ölçeklendirirken, matematiksel formül farklı komutlar arasındaki ilişkiyi koruduğu için kalite kaybı olmaz. ImageVector için iyi bir örnek, matematiksel formüllerle tanımlanabilen Material Semboller'dir.

Tutma yeri, sepeti ve iki tekerleği olan bir alışveriş sepetinin basit çizgi sanatı simgesi.
Şekil 2. Vektör örneği (dosya uzantıları .xml'dir veya Kotlin kodunda tanımlanır).

ImageBitmap

Compose'da, bir raster resim (genellikle Bitmap olarak adlandırılır) bir ImageBitmap örneğine yüklenebilir ve bit eşlemi ekrana çizmekten BitmapPainter sorumludur.

Temel kullanım alanları için painterResource(), ImageBitmap oluşturmak amacıyla kullanılabilir ve bir Painter nesnesi (bu örnekte BitmapPainter) döndürür:

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

Daha fazla özelleştirmeye (ör. özel boyama uygulaması) ve ImageBitmap öğesine erişmeniz gerekiyorsa aşağıdaki şekilde yükleyebilirsiniz:

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

ImageVector

VectorPainter, ekrana ImageVector çizmekten sorumludur. ImageVector, Ölçeklenebilir Vektör Grafikleri (SVG) komutlarının bir alt kümesini destekler. Tüm resimler vektör olarak temsil edilemez (örneğin, kameranızla çektiğiniz fotoğraflar vektöre dönüştürülemez).

Mevcut bir drawable vektör XML dosyasını içe aktararak (içe aktarma aracını kullanarak Android Studio'ya aktarılır) veya sınıfı uygulayıp yol komutlarını manuel olarak vererek özel bir ImageVector oluşturabilirsiniz.

Temel kullanım alanlarında painterResource(), ImageVectors için ImageBitmap sınıfında olduğu gibi çalışır ve sonuç olarak VectorPainter döndürür. painterResource(), VectorDrawables ve BitmapDrawables'nin sırasıyla VectorPainter ve BitmapPainter'ye yüklenmesini sağlar. Bir VectorDrawable öğesini resme yüklemek için şunu kullanın:

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

Daha fazla özelleştirme yapmanız ve ImageVector öğesine erişmeniz gerekiyorsa aşağıdaki şekilde yükleyebilirsiniz:

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