Deklaracja android.graphics.Bitmap.createScaledBitmap
Is
public static Bitmap createScaledBitmap
(Bitmap src, int dstWidth, int dstHeight, boolean filter)
Jednak dokumentacja nie wyjaśnia żadnego z parametrów. Wszystkie z nich są dość oczywiste, z wyjątkiem boolean filter
. Czy ktoś wie co to robi?
Aby rozwinąć odpowiedź Karana: Zasadniczo nie zobaczysz żadnej różnicy, jeśli skalujesz obraz w dół , ale zrobisz to, jeśli skalujesz go w górę .
Przejście
filter = false
spowoduje zablokowanie obrazu w pikselach.Przechodzenie
filter = true
daje gładsze krawędzie.Jednak, jak zauważył EIYeante w komentarzach, nadal możesz zauważyć różnicę. To jest ich przykładowy obraz.
źródło
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
zmieniam tylko parametr filtru.Filtr ustawi FILTER_BITMAP_FLAG do malowania, co wpływa na próbkowanie bitmap po ich przekształceniu na podstawie podanej wartości.
źródło
Trochę późno na imprezę, ale pomyślałem, że niektóre przykładowe zdjęcia mogą wyjaśnić problem.
Interfejs API Androida nie określa, jaki rodzaj filtra zostanie zastosowany, więc myślę, że pytanie brzmi: czy chcesz, aby twoje piksele pozostały takie, jakie są (tak jak byś chciał w sztuce 8-bitowej), czy też jest w porządku zastosować transformację do spraw, aby obraz był bardziej smaczny (tak jak na zdjęciach).
Istnieje bardziej ogólne pytanie, czy i jak filtrować na superużytkowniku .
Mówi Jeff Atwood:
źródło