Darstellung großer Bilder

W

wurzel

Neues Mitglied
0
Hallo Leute,
Ich versuche gerade Bilder auf meinem HTC darzustellen. Bis jetz ist es mir nicht gelungen dies performant zu tun! Die Bilder haben eine größe von ca 2000x2000px und stehen mir als jpg Dateien zur verfügung. Mein Ziel ist es, dass ich zoomen und rotieren kann.

Zuerzeit hab ich es mit der Einbindung über die BitmapFactory und Transformationen mit einer Matrix.
Jedoch kommt es nach wenigen Drehungen zu einem Abstutz des Programms (VM won't let us allocate xx Bytes).

Codebeispiel:
Code:
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 4;
        Bitmap bitmap = BitmapFactory.decodeFile("uni", options); 
        
        int width = bitmapOrg.getWidth();
        int height = bitmapOrg.getHeight();
        int newWidth = 100;
        int newHeight = 100;

        Bitmap bitmap = BitmapFactory.decodeFile("uni"); 
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight =((float) newHeight) / height;

        Matrix matrix = new Matrix();
        matrix.postRotate(x);

        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
                          width, height, matrix, true);
        BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

        ImageView imageView = new ImageView(this);
        imageView.setImageDrawable(bmd);
Jetzt meine Frage: Ist es überhaupt sinnvoll, das so zu lösen? Oder gibts da bessere Alternativen. Ich sehe leider den Wald vor lauter Bäumen nicht ;)
Denn, dass das ganze richtig flüssig geht, beweist ja die Fotogallerie.

lg Wurzl
 
danke für den link ;)... werde mal schaun ob ich dort die gewünschten infos rausholen kann. Sonst meld ich mich einfach hier wieder :)
 
so.. ich hab mir das jetzt mal ein bisschen zu gemüte geführt. (danke nochmal @shini)
leider ist das ganze so umfangreich, dass ich bis jetzt noch nicht das gewünschte gefunden habe. z.b. wo lädt der die bilder in das programm bzw. stellt sie dar?
kennt sich da jemand aus oder hat sich damit schonmal näher beschäftigt und kann mir helfen?
lg wurzel
 
hi,

nachdem ich mich jetz einige stunden mit dem code beschäftigt hab weiß ich immer noch nicht wie ich mein problem lösen soll! der code ist jetz fast 1 jahr alt und das einlesen der bilder erfolgt auch dort mit dem gleichen classen und methoden die ich bereits ohne erfolg verwende!
Oft findet man auch dort einen ToDo - Kommentar, dass bestimmte Funktionalitäten noch eingebaut werden müssen. Von dem her wäre vermutlich der aktuelle Source-Code interessant.... kann man den irgendwo beziehen?
da die bilder die ich anzeigen muss bis zu 25 megapixel groß sein könnnen suche ich eine möglichkeit nicht das ganze bild einzulsen sonder nur ausschnitte!
lg wurzel
 
Zuletzt bearbeitet:
Danke für die neue Version vom Sourcecode. Leider hat mir das auch nicht wirklich weitergeholfen! Ich habe es zwar geschafft das Bild zu laden und darzustellen (mithilfe von Donwsampling), da ich aber mit hochauflösenden Bildern arbeiten muss ist das auch keine alternative.

Ich bekomm immer noch OutOfMemoryExceptions wenn ich versuche das ganze Bild (ohne Downsampling) darzustellen:
ERROR/AndroidRuntime(1101): java.lang.OutOfMemoryError: bitmap size exceeds VM budget

Ich suche nach einer Möglichkeit nur einen kleinen Ausschnitt eines Bildes in den Speicher zu laden, ähnlich wie bie google maps wo die benötigten Bildteile bei bedarf geladen werden.

lg wurzel
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.051
jogimuc
J
softwaretk
Antworten
3
Aufrufe
1.205
swa00
swa00
M
Antworten
0
Aufrufe
1.145
mglinka99
M
Zurück
Oben Unten