2016-10-19 2 views
0

In meiner App habe ich die vollständige Überprüfung des Bildes implementiert, wenn Sie darauf klicken. Im Programm passiert es auf diese Weise: Ich übergebe die Bitmap von den Bildansichten (Bilder, die von der Kamera gemacht wurden) zur nächsten Aktivität, setze sie extra, die nächste Aktivität akzeptiert sie und zeigt die Bitmap in der Bildansicht an. Ich habe viele Bildansichten, und Problem ist zum Beispiel Wenn ich Bilder im vertikalen Zustand von der Kamera machen und wenn das nächste Bild mache ich im horizontalen Zustand, wird Vollbild der vorherigen Bilder in der Höhe komprimiert.Übergeben der Bitmap an die nächste Aktivität, Skalierung Problem

Wie gebe ich die Bitmap aus 1-Aktivität zum nächsten:

 Bitmap bitmap = params[0]; 
     int h = bm.getHeight(); 
     int w = bm.getWidth(); 
     bitmap = bitmap.createScaledBitmap(bitmap,w/2,h/2, true); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 50, baos); 
     byte[] b = baos.toByteArray(); 

     Intent intent = new Intent(PhotoAdder.this, FullScreenImage.class); 
     intent.putExtra("picture", b); 
     startActivity(intent); 

Wie nächsten Aktivität Bitmap nimmt:

Bundle extras = getIntent().getExtras(); 
    byte[] b = extras.getByteArray("picture"); 

    Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); 
    ImageView image = (ImageView) findViewById(R.id.full); 
    image.setImageBitmap(bmp); 

die Breite und Höhe der Bildansicht der nächsten Aktivität ist match_parent.

+0

Sie haben bereits skalieren Bitmap von h/2. –

+0

@Dheerubhai, ich weiß, aber in der nächsten Aktivität abhängig von zuletzt gemacht Bild ändert es die Skalierung des Bildes, wie ich zuvor schrieb. – Bek

+0

alle Möglichkeiten, die Sie den Pfad des Bildes Ritus erhalten, übergeben Sie das nur an die nächste Aktivität und laden Sie das Bild erneut mit Bitmap – nakul

Antwort

0

Zum Skalieren eines Bildes müssen Sie einen Parameter (Höhe oder Breite) korrigieren und den anderen Parameter umbrechen, Android erledigt das automatisch. Legen Sie also Bildhöhe und -breite entsprechend fest. Und stellen Sie auch den Maßstab ein. Darüber hinaus können Sie auch zur Laufzeit überprüfen, ob die Breite größer als die Höhe ist. Legen Sie programmatisch die Breite als übergeordnetes Parent und die Höhe als wrapcontent fest und umgekehrt.

Ankit

0

Versuchen zu vermeiden, in Erinnerung behalten Bitmap.
Versuchen Sie, Bitmap in eine temporäre Datei zu speichern und den Dateipfad an eine andere Aktivität zu übergeben.

Wenn Sie das Porträtbild im horizontalen Bildschirm anzeigen möchten, müssen Sie den Skalenwert ImageView richtig ändern.

überprüfen https://stackoverflow.com/a/25069883/2373466

+0

Ich möchte Bild in seinem ursprünglichen Zustand zeigen, wenn Bild in horizontalem Zustand gemacht, um es im horizontalen Zustand zu zeigen Das gleiche gilt für den vertikalen Zustand. Leider half das Ändern des scaleType nicht, ich werde versuchen, Bitmap über eine temporäre Datei zu übergeben. – Bek

+0

@Bek dann Bild Exif Informationen überprüfen und Bild Maßstab Typ ändern. –

Verwandte Themen