Mam pobraną mapę bitową ciągu Base64 z mojej zdalnej bazy danych ( encodedImage
jest to ciąg reprezentujący obraz z Base64):
profileImage = (ImageView)findViewById(R.id.profileImage);
byte[] imageAsBytes=null;
try {
imageAsBytes = Base64.decode(encodedImage.getBytes());
} catch (IOException e) {e.printStackTrace();}
profileImage.setImageBitmap(
BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
profileImage to mój ImageView
Ok, ale muszę zmienić rozmiar tego obrazu, zanim pokażę go na ImageView
moim układzie. Muszę go zmienić na 120 x 120.
Czy ktoś może mi powiedzieć kod, aby zmienić jego rozmiar?
Przykłady, które znalazłem, nie mogły zostać zastosowane do bitmapy uzyskanej w oparciu o ciąg base64.
Odpowiedzi:
Zmiana:
Do:
źródło
EDYCJA: jak sugeruje @aveschini, dodałem
bm.recycle();
do wycieków pamięci. Pamiętaj, że jeśli używasz poprzedniego obiektu do innych celów, postępuj odpowiednio.źródło
public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight)
. Spędziłem dużo czasu, zastanawiając się nad tym. ; PJeśli masz już mapę bitową, możesz użyć następującego kodu, aby zmienić rozmiar:
źródło
Skala oparta na współczynniku kształtu :
Aby użyć wysokości jako podstawy szerokości, zmień na:
źródło
Skaluj bitmapę z docelowym maksymalnym rozmiarem i szerokością, zachowując proporcje:
źródło
spróbuj tego kodu:
Mam nadzieję, że to się przyda.
źródło
Ktoś zapytał, jak zachować proporcje w tej sytuacji:
Oblicz współczynnik używany do skalowania i użyj go dla obu wymiarów. Powiedzmy, że chcesz, aby obraz miał 20% wysokości ekranu
Aby uzyskać rozdzielczość ekranu, masz następujące rozwiązanie: Uzyskaj wymiary ekranu w pikselach
źródło
Spróbuj tego: Ta funkcja proporcjonalnie zmienia rozmiar mapy bitowej. Gdy ostatni parametr jest ustawiony na „X”,
newDimensionXorY
traktowany jest jak nowa szerokość, a gdy ustawiony jest na „Y” nowa wysokość.źródło
źródło
źródło
źródło
Od API 19 istnieją mapy bitowe setWidth (int width) i setHeight (int height). http://developer.android.com/reference/android/graphics/Bitmap.html
źródło
Zmiana rozmiaru mapy bitowej na podstawie dowolnego rozmiaru wyświetlacza
źródło
Chociaż zaakceptowana odpowiedź jest poprawna, nie zmienia rozmiaru
Bitmap
, zachowując ten sam współczynnik kształtu . Jeśli szukasz metody zmiany rozmiaruBitmap
przy zachowaniu tego samego współczynnika proporcji, możesz użyć następującej funkcji narzędziowej. Szczegóły użytkowania i objaśnienie funkcji znajdują się pod tym linkiem .źródło
źródło
Utrzymanie proporcji,
źródło