Mam mapy bitowe, które są kwadratami lub prostokątami. Biorę najkrótszą stronę i robię coś takiego:
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);
Następnie skaluję ją do mapy bitowej 144 x 144, używając tego:
Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
Problem polega na tym, że przycina lewy górny róg oryginalnej mapy bitowej. Czy ktoś ma kod do przycięcia środka mapy bitowej?
100x1000
obraz, otrzymujesz100x550
obraz.Chociaż większość powyższych odpowiedzi zapewnia sposób na zrobienie tego, istnieje już wbudowany sposób na osiągnięcie tego i jest to 1 wiersz kodu (
ThumbnailUtils.extractThumbnail()
)Jeśli chcesz, aby obiekt bitmapowy został poddany recyklingowi, możesz podać opcje, które to robią:
Od: ThumbnailUtils Documentation
Czasami wypadały mi błędy pamięci, gdy korzystałem z zaakceptowanej odpowiedzi, a użycie ThumbnailUtils rozwiązało te problemy. Ponadto jest to znacznie czystsze i bardziej wielokrotnego użytku.
źródło
Czy rozważałeś zrobienie tego od
layout.xml
? Można ustawić dlaImageView
tej ScaleType doandroid:scaleType="centerCrop"
i ustaw wymiary obrazu wImageView
wewnątrzlayout.xml
.źródło
Możesz użyć następującego kodu, który może rozwiązać twój problem.
Powyższa metoda wykonuje postScalling obrazu przed kadrowaniem, dzięki czemu można uzyskać najlepszy wynik z przyciętym obrazem bez błędu OOM.
Aby uzyskać więcej informacji, możesz polecić tego bloga
źródło
Tutaj pełniejszy fragment, który wycina środek [bitmapy] o dowolnych wymiarach i skaluje wynik do żądanego [IMAGE_SIZE] . Więc zawsze otrzymasz [croppedBitmap] skalowany kwadrat środka obrazu o stałym rozmiarze. idealny do tworzenia miniatur i tak dalej.
Jest to pełniejsze połączenie pozostałych rozwiązań.
źródło
Prawdopodobnie najłatwiejsze dotychczas rozwiązanie:
import:
źródło
Aby poprawić rozwiązanie @willsteel:
źródło
źródło
źródło