Eu tenho bitmaps que são quadrados ou retângulos. Pego o lado mais curto e faço algo assim:
int value = 0;
if (bitmap.getHeight() <= bitmap.getWidth()) {
value = bitmap.getHeight();
} else {
value = bitmap.getWidth();
}
Bitmap finalBitmap = null;
finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);
Então eu o dimensiono para um bitmap 144 x 144 usando o seguinte:
Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
O problema é que ele corta o canto superior esquerdo do bitmap original. Alguém tem o código para cortar o centro do bitmap?
100x1000
imagem, você recebe de volta uma100x550
imagem.Embora a maioria das respostas acima forneça uma maneira de fazer isso, já existe uma maneira interna de fazer isso e é uma linha de código (
ThumbnailUtils.extractThumbnail()
)Se você deseja que o objeto bitmap seja reciclado, pode passar opções que o tornam:
De: documentação ThumbnailUtils
Às vezes, eu estava perdendo erros de memória ao usar a resposta aceita e o ThumbnailUtils resolveu esses problemas para mim. Além disso, isso é muito mais limpo e reutilizável.
fonte
Você já pensou em fazer isso a partir do
layout.xml
? Você pode definir para o seuImageView
o ScaleType paraandroid:scaleType="centerCrop"
e definir as dimensões da imagem noImageView
interior dolayout.xml
.fonte
Você pode usar o seguinte código que pode resolver seu problema.
O método acima postScalling da imagem antes do corte, para que você possa obter o melhor resultado com a imagem cortada sem obter erro OOM.
Para mais detalhes, você pode consultar este blog
fonte
Aqui está um trecho mais completo que recorta o centro de um [bitmap] de dimensões arbitrárias e dimensiona o resultado para o [IMAGE_SIZE] desejado . Assim, você sempre obterá um quadrado em escala [croppedBitmap] do centro da imagem com um tamanho fixo. ideal para miniaturas e tal.
É uma combinação mais completa das outras soluções.
fonte
Provavelmente a solução mais fácil até agora:
importações:
fonte
Para corrigir a solução @willsteel:
fonte
fonte
fonte