2013-06-05 35 views
7

Tôi có một hình ảnh được lưu trữ dưới dạng mảng byte [] và tôi muốn lật hình ảnh trước khi tôi gửi nó ra để được xử lý ở nơi khác (dưới dạng mảng byte []) .Ảnh lật được lưu dưới dạng mảng byte []

Tôi đã tìm kiếm xung quanh và không thể tìm thấy giải pháp đơn giản mà không thao tác từng bit trong mảng byte [].

Điều gì về việc chuyển đổi mảng byte [] thành kiểu ảnh của một loại nào đó, lật nó bằng cách sử dụng phương thức lật hiện có, sau đó chuyển đổi thành mảng byte []?

Bạn có lời khuyên nào không?

Chúc mừng!

+0

Bạn có ý gì khi "lật"? – fge

+0

Xoay hình ảnh để nó chuyển từ hình ảnh "lộn ngược" sang hình ảnh "thẳng đứng". – LKB

+2

'Điều gì về việc chuyển đổi mảng byte [] thành kiểu ảnh của một loại nào đó, lật nó bằng cách sử dụng phương thức lật hiện có, và sau đó chuyển đổi trở lại thành mảng byte []? Chuyển đổi sang bitmap, xoay, sau đó chuyển đổi trở lại mảng. – Voicu

Trả lời

9

Byte mảng để bitmap:

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

Sử dụng này để xoay hình ảnh bằng cách cung cấp các góc bên phải (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); 
} 

Sau đó trở lại mảng:

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

Hình ảnh của tôi là định dạng Gray8, quá trình chuyển đổi từ mảng byte sang Bitmap và ngược lại không ảnh hưởng đến định dạng, phải không? Cảm ơn bạn rất nhiều vì đã giúp đỡ của bạn. :) – LKB

+0

Eek, NullPointerException khi trả về bitmap - return Bitmap.createBitmap (bitmapSource, 0, 0, bitmapSource.getWidth(), \t \t \t \t bitmapSource.getHeight(), matrix, true); – LKB

+1

Bạn rất có thể đã gửi tham chiếu null đến phương thức 'rotateImage' vì tại bước đầu tiên, hình ảnh không thể được giải mã thành' Bitmap'. – Voicu