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

En yaygın iki resim biçimi türü raster ve vektör resimlerdir.

Bir raster grafik biçimi, renk içeren küçük kareler olan piksellerden oluşur (kırmızı, yeşil, mavi ve alfa değerlerinden oluşur). Çok sayıda pikseli bir araya getirdiğinizde fotoğraf gibi çok ayrıntılı bir görüntü oluşturabilirsiniz. Rastgele grafiklerin çözünürlüğü sabittir (piksel sayısı sabittir). Bu, görüntünün boyutunu büyüttüğünüzde ayrıntı kaybı yaşanacağı ve piksellerin görünebileceği anlamına gelir. Raster grafik biçimlerine örnek olarak JPEG, PNG ve WEBP verilebilir.

Golden Retriever köpeğinin yakın çekim fotoğrafı.
Şekil 1. JPEG dosyası örneği.

Vektör resimler ise ekrandaki bir görsel öğenin ölçeklenebilir matematiksel gösterimleridir. Vektör, görüntünün ekranda nasıl çizileceğini açıklayan bir komutlar grubudur (ör. çizgi, nokta veya dolgu). Ekranda bir vektör ölçeklendirilirken matematiksel formül farklı komutlar arasındaki ilişkiyi koruduğu için kalite kaybı olmaz. ImageVector için iyi örnekler, matematiksel formüllerle tanımlanabildikleri için Material Symbols'dür.

Sapı, sepeti ve iki tekerleği olan bir alışveriş arabasının basit çizgi çizim simgesi.
Şekil 2. Vektör örneği (dosya uzantıları .xml 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 BitmapPainter, bit eşlemi ekrana çizmekten sorumludur.

Temel kullanım alanlarında, painterResource() işlevi ImageBitmap oluşturmak için kullanılabilir ve Painter nesnesi (bu durumda 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ı) ihtiyacınız varsa ve ImageBitmap öğesine erişmeniz gerekiyorsa aşağıdaki şekilde yükleyebilirsiniz:

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

ImageVector

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

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

Temel kullanım alanlarında painterResource(), ImageBitmap sınıfında olduğu gibi ImageVectors için de çalışır ve sonuç olarak VectorPainter döndürür. painterResource(), VectorDrawables ve BitmapDrawables öğelerinin sırasıyla VectorPainter ve BitmapPainter içine 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ştirmeye ihtiyacınız varsa ve ImageVector öğesine erişmeniz gerekiyorsa aşağıdaki şekilde yükleyebilirsiniz:

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