ImageBitmap ve ImageVector karşılaştırması

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

Kafes grafik biçimi pikseller içerir: bir renk içeren (kırmızı, yeşil, mavi ve alfa değerlerinden oluşan) tek tek küçük kareler. Çok sayıda pikseli bir araya getirdiğinizde, fotoğraf gibi çok ayrıntılı bir resim oluşturulabilir. Kafes grafikler sabit çözünürlüğe (sabit sayıda piksel) sahiptir. Bu, resmin boyutunu artırdığınızda ayrıntıların kaybolacağı ve pikselleşmenin oluşabileceği anlamına gelir. Kafes grafik biçimlerine örnek olarak JPEG, PNG ve WEBP verilebilir.

JPEG dosyası örneği
Şekil 1: JPEG dosyası örneği

Vektör resimleri ise ekrandaki görsel bir öğenin ölçeklenebilir matematiksel temsilleridir. Vektör, ekrandaki resmin nasıl çizileceğini açıklayan bir komut dizisidir. Örneğin, bir çizgi, nokta ya da dolgu. Ekranda bir vektörü ölçeklendirirken, matematiksel formül farklı komutlar arasındaki ilişkiyi koruyacağı için kaliteden ödün vermez. Tümü matematiksel formüllerle tanımlanabileceğinden Malzeme Simgeleri, ImageVector'a iyi bir örnektir.

Vektör örneği (dosya uzantıları .xml biçimindedir veya Kotlin kodunda tanımlanmıştır)
Şekil 2: Vektör örneği (dosya uzantıları .xml biçimindedir veya Kotlin kodunda tanımlanır)

ImageBitmap

Compose'da bir kafes görüntü (genellikle Bitmap olarak adlandırılır) ImageBitmap örneğine yüklenebilir. BitmapPainter ise bit eşlemi ekrana çizmekten sorumludur.

Basit kullanım alanlarında ImageBitmap oluşturma işlemini gerçekleştiren ve Painter nesnesi (bu örnekte BitmapPainter) döndüren painterResource() kullanılabilir:

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

Daha fazla özelleştirmeye (örneğin, özel boyacı uygulaması) ihtiyacınız varsa ve ImageBitmap öğesine erişmeniz gerekiyorsa dosyayı şu şekilde yükleyebilirsiniz:

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

ImageVector

Ekrana ImageVector çizmekten VectorPainter sorumludur. ImageVector, 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 vektör çekilebilir XML dosyasını içe aktararak (içe aktarma aracını kullanarak Android Studio'ya aktarılmıştır) veya sınıfı uygulayıp yol komutlarını manuel olarak vererek özel bir ImageVector oluşturabilirsiniz.

painterResource(), basit kullanım alanlarında ImageBitmap sınıfı için olduğu gibi ImageVectors için de geçerlidir ve sonuç olarak VectorPainter döndürülür. painterResource(), VectorDrawables ve BitmapDrawables öğelerinin sırasıyla VectorPainter ve BitmapPainter bölümlerine yüklenmesini sırasıyla gerçekleştirir. 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 ve ImageVector öğesine erişmeniz gerekiyorsa dosyayı şu şekilde yükleyebilirsiniz:

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