2012-03-24 23 views
6

Tôi muốn tìm hiểu kích thước của một hình ảnh được tổ chức tại một mảng byte trong KBLàm thế nào để có được kích thước của một hình ảnh được tổ chức tại một mảng byte trong KB

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.mPicture); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object 
byte[] b = baos.toByteArray(); 

Các bản ghi sau đây hiển thị hai kết quả khác nhau cho một hình ảnh mà là 11.7KB:

Log.d(TAG, "bm size: " + bm.getByteCount()/1024); // 942 
Log.d(TAG, "baos size: " + baos.size()/1024); // 81 
Log.d(TAG, "byte size: " + b.length/1024); // 81 

đó là kết quả chính xác hoặc làm thế nào để tôi nhận được kết quả đúng ?? Bất kỳ trợ giúp được đánh giá cao.

Trả lời

9

bm.getByteCount()/1024 // 942 là kích thước ban đầu của hình ảnh của bạn

baos.size()/1024 // 81 là kích thước sau khi hình ảnh đã được nén

Đầu tiên cho kích thước của bitmap mà đại diện cho tài nguyên ảnh gốc nhưng hai Hãy cho tiếp theo kích thước của luồng hoặc mảng byte biểu thị được nén. Vì vậy, cái đầu tiên trả về một giá trị lớn hơn hai giá trị tiếp theo.

+0

cách bạn giải thích kích thước khác với kích thước hình ảnh thực tế. của nó được cho là 11.7KB nhưng nó trở về một cái gì đó khác nhau như bạn có thể thấy ... –

+1

11.7KB là kích thước của tập tin nén bạn đã mở. Một khi nó được nạp như là một Bitmap, kích thước của nó là không nén, do đó, kích thước của nó là tỷ lệ thuận với chiều rộng * chiều cao. Sau đó, bạn đang nén thành JPEG với hệ số nén là 100, kết quả là 81. Điều này khác với bản gốc có lẽ vì bản gốc được nén với độ nén 60-80 thay vì 100. – GuillermoMP

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