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

Bitmaps skalieren und zusammenfügen (Problem)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von cypressious, 06.02.2011.

  1. cypressious, 06.02.2011 #1
    cypressious

    cypressious Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    80
    Erhaltene Danke:
    22
    Registriert seit:
    04.12.2010
    Hallo zusammen,

    ich habe ein Problem beim Verkleinern/Vergrößern von zwei Bitmaps, die ich dann zusammenfügen möchte.

    Zunächst lade ich das eine Bitmap aus einer Datei und das andere aus den Resourcen.
    Code:
    Bitmap imageMotiv = ((BitmapDrawable) getResources().getDrawable(
                    R.drawable.motiv_canvas)).getBitmap();
    
    Bitmap imagePic = ((BitmapDrawable) Drawable.createFromPath(imageUri))
                    .getBitmap();
    Dann kommt das Skalieren:
    Code:
    float picScale = ((float) 640)
                    / ((float) Math.max(imagePic.getHeight(), imagePic.getWidth()));
    
    int newHeight = (int) (imagePic.getHeight() * picScale);
    int newWidth = (int) (imagePic.getWidth() * picScale);
    Bitmap rImagePic = Bitmap.createScaledBitmap(imagePic, newWidth,
                    newHeight, true);
        
    Bitmap rImageMotiv = Bitmap.createScaledBitmap(imageMotiv,
                    (int) ((float) imagePic.getWidth() * 1.25F),
                    (int) ((float) imagePic.getHeight() * 4F / 3F), true);
    Der Vorgang sorgt dafür, dass rImageMotiv um einen bestimmten Faktor größer ist, als rImagePic. Dabei soll die längste Kante von rImagePic 640 sein.

    In einem späteren Schritt male ich per Canvas rImagePic in rImageMotiv rein. Dabei stellt sich aber raus, dass die Proportionen ganz und gar nicht stimmen. Ich habe das ganze auch mal debuggt und festgestellt, dass die neu erstellten Bitmaps jeweils Höhe und Breite -1 haben, obwohl die geladenen Bitmaps die richtige Größe haben.

    Sieht jemand einen Fehler oder kann mir eine Alternative vorschlagen? Ich für meinen Teil verzweifle ein bisschen an dem Code.

    Grüße,
    cypressious
     
  2. cypressious, 06.02.2011 #2
    cypressious

    cypressious Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    80
    Erhaltene Danke:
    22
    Registriert seit:
    04.12.2010
    Naja, das Geheimnis ist gelüft, es waren rein logsiche Fehler. Zunächst muss im zweiten Teil der Code folgendermaßen lauten:
    Code:
    Bitmap rImageMotiv = Bitmap.createScaledBitmap(imageMotiv,
                    (int) ((float) [B]rImagePic[/B].getWidth() * 1.25F),
                    (int) ((float) [B]rImagePic[/B].getHeight() * 4F / 3F), true);
    
    Sonst würde man die Werte des unveränderten Bitmaps nehmen. Zum anderen hat das Verhältnis 4/3 nicht gestimmt, was aber mit dem Problem im Wesentlichen nichts zu tun hat.

    Dass der Debugger mir als Breite und Höhe -1 ausgegeben hat, verstehe ich nun immernoch nicht, allerdings hat sich das als irrelevant herausgestellt.
     

Diese Seite empfehlen