1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Darstellung großer Bilder

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von wurzel, 02.10.2009.

  1. wurzel, 02.10.2009 #1
    wurzel

    wurzel Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    02.10.2009
    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
     
  2. Shinigami, 02.10.2009 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    wurzel bedankt sich.
  3. wurzel, 02.10.2009 #3
    wurzel

    wurzel Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    02.10.2009
    danke für den link ;)... werde mal schaun ob ich dort die gewünschten infos rausholen kann. Sonst meld ich mich einfach hier wieder :)
     
  4. Ripei, 03.10.2009 #4
    Ripei

    Ripei Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    02.10.2009
    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
     
  5. wurzel, 05.10.2009 #5
    wurzel

    wurzel Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    02.10.2009
    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: 05.10.2009
  6. enjoy_android, 05.10.2009 #6
    enjoy_android

    enjoy_android Android-Lexikon

    Beiträge:
    1,258
    Erhaltene Danke:
    390
    Registriert seit:
    10.12.2008
  7. wurzel, 06.10.2009 #7
    wurzel

    wurzel Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    02.10.2009
    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
     

Diese Seite empfehlen