2017-01-21 10 views
5

Trong android, tôi nhận được một đối tượng Hình ảnh từ đây https://inducesmile.com/android/android-camera2-api-example-tutorial/ hướng dẫn camera này. Nhưng tôi muốn bây giờ lặp qua các giá trị pixel, không ai biết làm thế nào tôi có thể làm điều đó? Tôi có cần phải chuyển đổi nó sang cái gì khác và làm thế nào tôi có thể làm điều đó?Làm cách nào để chuyển đổi đối tượng android.media.Image thành bitmap?

Cảm ơn

Trả lời

5

Nếu bạn muốn lặp suốt pixel thì bạn cần phải chuyển đổi nó đầu tiên Bitmap đối tượng. Bây giờ kể từ những gì tôi nhìn thấy trong mã nguồn mà nó trả về một Image, bạn có thể trực tiếp chuyển đổi các byte thành bitmap.

Image image = reader.acquireLatestImage(); 
    ByteBuffer buffer = image.getPlanes()[0].getBuffer(); 
    byte[] bytes = new byte[buffer.capacity()]; 
    buffer.get(bytes); 
    Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null); 

Sau đó, khi bạn nhận được đối tượng bitmap, bây giờ bạn có thể lặp qua tất cả các pixel.

+0

Mục đích của dòng 'buffer.get (bytes)' nếu bộ đệm không được sử dụng sau này là gì? – mercury0114

+2

Nó tải hình ảnh trong bộ nhớ từ bộ đệm vào mảng byte. Vì vậy, 'get' là để lấy lại các byte từ bộ đệm ảnh. –

+0

Có cách nào khác để thực hiện việc này không (truy cập các pixel từ Hình ảnh)? Tải một bitmap đòi hỏi nhiều bộ nhớ. – Mugur

Các vấn đề liên quan