Co chcę zrobić, to narysuj wycięcie obrazu na ekranie, w wybranej przeze mnie pozycji.Narysuj część obrazu na ekranie (bez wczytywania całości do pamięci)
Mogę dość łatwo załadować to do bitmapy. a następnie narysuj podsekcję.
Ale gdy obraz jest duży, to oczywiście wyczerpuje pamięć.
Mój ekran to widok powierzchni. A więc ma płótno itp.
Jak mogę narysować część obrazu, przy danym przesunięciu i zmienić rozmiar. Bez ładowania oryginału do pamięci
Znalazłem odpowiedź, która wyglądała wzdłuż właściwych linii, ale nie działa poprawnie. Za pomocą rysunków z pliku. Próba kodu poniżej. Oprócz losowych rozmiarów, które produkuje, jest również niekompletne.
przykład:
Drawable img = Drawable.createFromPath(Files.SDCARD + image.rasterName);
int drawWidth = (int) (image.GetOSXWidth()/(maxX - minX)) * m_canvas.getWidth();
int drawHeight = (int)(image.GetOSYHeight()/(maxY - minY)) * m_canvas.getHeight();
// Calculate what part of image I need...
img.setBounds(0, 0, drawWidth, drawHeight);
// apply canvas matrix to move before draw...?
img.draw(m_canvas);
Zobacz 'BitmapRegionDecoder'. Pomyśl, że to dokładnie to, czego szukasz. – bobnoble
@bobnoble Dzięki przeglądając javadocs, wygląda na to, że to wystarczy. I jest całkiem prosty w użyciu. – Doomsknight
Napisz to jako odpowiedź @bobnoble - jest przydatna i będzie nadal dla innych. – Elemental