2013-03-01 12 views
7

Pracuję nad rozproszoną aplikacją z Androidem. Rozdzieliłem jeden obraz na 4 części, a następnie przetworzę. Teraz chcę połączyć 4 obrazy bitmapowe w jeden obraz. Jak mogę to zrobić?Jak połączyć wiele obrazów w jeden obraz w systemie Android?

+0

http://stackoverflow.com/questions/6944061/android-merge-two-images nadzieję, że to pomoże Ci – RAAAAM

+0

Możliwa duplikat [Nakładanie dwóch obrazów w Android, aby ustawić podgląd obrazu] (http://stackoverflow.com/questions/2739971/overlay-two-images-in-android-to-set-an-imageview) – GSerg

Odpowiedz

17
Bitmap[] parts = new Bitmap[4]; 
    Bitmap result = Bitmap.createBitmap(parts[0].getWidth() * 2, parts[0].getHeight() * 2, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(result); 
    Paint paint = new Paint(); 
    for (int i = 0; i < parts.length; i++) { 
     canvas.drawBitmap(parts[i], parts[i].getWidth() * (i % 2), parts[i].getHeight() * (i/2), paint); 
    } 

Coś takiego =)

+1

Sprawdź to demo może pomóc w rozwiązaniu problemu łączenia kilku obrazy tworzą jeden obraz http://whats-online.info/science-and-tutorials/92/how-to-combine-multiple-images-into-a-single-image-in-android/ –

6

następujący fragment kodu rade, aby połączyć cztery bitmap w jednym. Wywołaj tę metodę 3 razy, aby połączyć cztery obrazy.

Krok 1: Połącz dwa pierwsze obrazy

Etap 2: Zmiana nazwy dwa obrazy

Krok 3: Połączyć dwa nowe stworzone bitmapy

public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) { 
     Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig()); 
     Canvas canvas = new Canvas(bmOverlay); 
     canvas.drawBitmap(bmp1, new Matrix(), null); 
     canvas.drawBitmap(bmp2, 0, 0, null); 
     return bmOverlay; 
    } 
0

Trzeba utworzyć funkcję typu bitmapy. Oznacza to, że zwraca typ danych bitmapowych. Funkcja powinna mieć argument typu danych Bitmap, który jest tablicą.

Download demo here

Ty minie zdjęć do funkcji jako tablicę bitmapy. To jest nasza funkcja scalania nie tylko czterech obrazów, ale także dowolnej wielkości obrazów.

private Bitmap mergeMultiple(Bitmap[] parts){ 

    Bitmap result = Bitmap.createBitmap(parts[0].getWidth() * 2, parts[0].getHeight() * 2, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(result); 
    Paint paint = new Paint(); 
    for (int i = 0; i < parts.length; i++) { 
     canvas.drawBitmap(parts[i], parts[i].getWidth() * (i % 2), parts[i].getHeight() * (i/2), paint); 
    } 
     return result; 
    } 

wreszcie skończysz .. Read more here

Powiązane problemy