A declaração de android.graphics.Bitmap.createScaledBitmap
é
public static Bitmap createScaledBitmap
(Bitmap src, int dstWidth, int dstHeight, boolean filter)
No entanto, a documentação não explica nenhum dos parâmetros. Todos eles são bastante óbvios, exceto boolean filter
. Alguém sabe o que faz?
Para expandir a resposta de Karan: Como regra geral, você não vai ver nenhuma diferença se você está escalando sua imagem para baixo , mas você vai se você está escalando-o para cima .
A passagem
filter = false
resultará em uma imagem pixelizada em bloco.Passar
filter = true
proporcionará bordas mais suaves.No entanto, como o EIYeante apontou nos comentários, você ainda pode ver uma diferença. Esta é a imagem de exemplo deles.
fonte
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
estou apenas alterando o parâmetro filter.O filtro definirá o FILTER_BITMAP_FLAG para a pintura que afeta a amostragem de bitmaps quando eles são transformados com base no valor que você fornece.
fonte
Um pouco atrasado para a festa, mas achei que algumas imagens de amostra poderiam esclarecer o problema.
A API do Android não especifica que tipo de filtro seria aplicado, então acho que a pergunta é: você deseja que seus pixels permaneçam como estão (como você gostaria na arte de 8 bits) ou se pode aplicar uma transformação a torne a imagem mais agradável (como você gostaria em fotografias).
Há uma pergunta mais geral sobre se e como filtrar o superusuário .
Diz Jeff Atwood:
fonte