Yanıtlar:
SKIA kaynak kodunu hızlıca incelemek (en azından varsayılan olarak) FİLTRE bayrağının basit bir çift doğrusal enterpolasyon yapmasına neden olduğunu gösterir. Beklenen sonuçların ne olduğunu görmek için Wikipedia'yı veya favori grafik referansınızı kontrol edin. Geleneksel olarak, görüntüleri büyütürken bilinear veya bikubik enterpolasyon yapmak ve görüntüleri küçültürken alan ortalaması almak istersiniz. Android / Skia'nın filtreleme olmadan küçülme sırasında basit alt örnekleme yaptığı izlenimini edindim (böylece küçülme sırasında bile filtrelemeden daha iyi sonuçlar elde edersiniz). (İnterpolasyon ile yüksek kalitede küçülme elde etmek için,% 50'lik bir ölçek küçültme serisi yapmayı içeren alternatif bir yöntem vardır. Bkz. Http://today.java.net/pub/a/today/2007/04/03/perils-of- görüntü getscaledinstance.html detaylar için.)
Karan'ın yanıta genişletmek için: Genel bir kural olarak resminizin ölçekleme eğer herhangi bir fark görmeyeceksiniz aşağı bunu ölçekleme eğer, ama olacak kadar .
Geçme filter = false
, bloklu, pikselli bir görüntüyle sonuçlanır.
Geçmek filter = true
size daha yumuşak kenarlar verecektir.
Ancak, EIYeante'nin yorumlarda belirttiği gibi, yine de bir fark görebilirsiniz. Bu onların örnek görüntüsü.
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
Sadece filter parametresini değiştiriyorum.
Filtre , verdiğiniz değere göre dönüştürüldüklerinde bitmap'lerin örneklenmesini etkileyen boyama için FILTER_BITMAP_FLAG değerini ayarlar .
Partiye biraz geç kaldım, ancak bazı örnek görüntülerin sorunu netleştirebileceğini düşündüm.
Android'in API'si ne tür bir filtre uygulanacağını belirtmez, bu yüzden soru şu: piksellerinizin olduğu gibi kalmasını istiyor musunuz (8 bit sanatta istediğiniz gibi) veya bir dönüşüm uygulamak uygun mu görüntüyü daha lezzetli hale getirin (fotoğraflarda istediğiniz gibi).
Süper kullanıcı üzerinde filtrelenip filtrelenmeyeceği ve nasıl filtreleneceği hakkında daha genel bir soru var .
Jeff Atwood şöyle diyor:
Genel olarak, daha büyük bir görüntüyü daha küçük bir görüntüye dönüştürürken hafif bir keskinleştirme efekti ve daha küçük bir görüntüyü daha büyük bir görüntüye dönüştürürken hafif bir bulanıklık efekti istersiniz.