2013-06-05 15 views
7

Mam obraz, który jest przechowywany jako tablica bajtów [], i chcę odwrócić obraz, zanim wyślę go do przetworzenia w innym miejscu (jako tablicy bajtów []) .Flip obraz zapisany jako bajt [] tablica

Przeszukałem i nie mogę znaleźć prostego rozwiązania bez manipulowania każdym bitem w tablicy byte [].

Co powiesz na przekonwertowanie tablicy bajtów [] na jakiś typ obrazu, przerzucenie go za pomocą istniejącej metody odwracania, a następnie konwersję z powrotem na tablicę bajtów []?

Każda rada?

Pozdrawiam!

+0

Co masz na myśli mówiąc "flip"? – fge

+0

Obracanie obrazu tak, aby przechodziło z obrazu "do góry nogami" do "pionowego" obrazu. – LKB

+2

'A co z konwersją tablicy bajtów [] na jakiś typ obrazu, przerzucaniem jej za pomocą istniejącej metody odwracania, a następnie konwertowaniem jej z powrotem na tablicę bajtów []?" Tak. Konwertuj na mapę bitową, obracaj, a następnie konwertuj z powrotem do tablicy. – Voicu

Odpowiedz

9

Bajt tablicy do mapy bitowej:

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 

Służy do obracania obrazu dostarczając odpowiedni kąt (180):

public Bitmap rotateImage(int angle, Bitmap bitmapSrc) { 
    Matrix matrix = new Matrix(); 
    matrix.postRotate(angle); 
    return Bitmap.createBitmap(bitmapSrc, 0, 0, 
     bitmapSrc.getWidth(), bitmapSrc.getHeight(), matrix, true); 
} 

następnie z powrotem do tablicy:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] flippedImageByteArray = stream.toByteArray(); 
+0

Moje zdjęcie jest w formacie Gray8, proces konwersji z tablicy bajtów na Bitmapę iz powrotem nie powinien mieć wpływu na format, prawda? Bardzo ci dziękuje za pomoc. :) – LKB

+0

eek NullPointerException po powrocie bitmapę - powrót Bitmap.createBitmap (BitmapSource, 0, 0, bitmapSource.getWidth() \t \t \t \t bitmapSource.getHeight(), macierz prawdziwej); – LKB

+1

Najprawdopodobniej wysłałeś zerowe odwołanie do metody 'rotateImage', ponieważ w tym pierwszym kroku obraz nie mógł zostać zdekodowany do' Bitmapy'. – Voicu

Powiązane problemy