Bitmaps skalieren und zusammenfügen (Problem)

cypressious

cypressious

Ambitioniertes Mitglied
23
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
 
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.
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
128
swa00
swa00
Laser5001
Antworten
3
Aufrufe
650
swa00
swa00
W
  • WuDiDong
Antworten
3
Aufrufe
767
jogimuc
J
Zurück
Oben Unten