Otrzymuję wyjątek braku pamięci przy użyciu Picasso podczas ładowania "dużych" obrazów (> 1,5 MB) z galerii Android (przy użyciu startActivityForResult).Załaduj duże obrazy za pomocą Picassa i niestandardowego obiektu transformacji
Używam niestandardowego obiektu docelowego, ponieważ muszę go wstępnie przetworzyć, kiedy jest gotowy, a także używam niestandardowego obiektu transformacji do skalowania bitmapy.
Problem polega na tym, że metoda public Bitmap transform(Bitmap source)
w moim obiekcie transformacji nigdy nie jest wywoływana z powodu wyjątku braku pamięci, więc nie mam możliwości ponownego próbkowania obrazu.
Ale jeśli użyję metody .resize(maxWidth, maxHeight)
, to ładuje obraz OK. Przekonałem się, że obiekt Transform jest również do tego celu, ale wydaje się, że metoda transformacji jest wywoływana po zmianie rozmiaru, a jeśli nie wywoła zmiany rozmiaru, to zakończy się brakiem pamięci.
Problem polega na tym, że przy zmianie rozmiaru muszę podać zarówno szerokość, jak i wysokość, ale muszę skalować i zachować proporcje.
Należy wziąć pod uwagę, że obrazy zostaną wybrane z galerii użytkownika, aby mogły być większe lub mniejsze, portret, kwadrat lub krajobraz itd., Więc potrzebuję własnego obiektu transformacji, aby wykonać logikę wymagającą zastosowania.
Math.ceil (Math.sqrt (1024 * 768)) dla szerokości i wysokości? – DayDayHappy
Tak, @DayDayHappy. Podaję przykład. Mam nadzieję, że to pomoże – edrian
dobrze zrobione i wznowione – DayDayHappy