2012-06-20 27 views
38

Tôi muốn nhận chiều rộng và chiều cao (tính bằng pixel) của hình ảnh được lưu trữ trên sdcard, trước khi tải chúng vào RAM. Tôi cần phải biết kích thước, vì vậy tôi có thể downsample chúng cho phù hợp khi tải chúng. Nếu không có downsampling chúng tôi nhận được một OutOfMemoryException.android: lấy kích thước hình ảnh mà không cần mở nó

Bất cứ ai cũng biết cách nhận kích thước của tệp hình ảnh?

Trả lời

104

Vượt qua tùy chọn để chỉ giải mã các giới hạn để các nhà máy:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 

//Returns null, sizes are in the options variable 
BitmapFactory.decodeFile("/sdcard/image.png", options); 
int width = options.outWidth; 
int height = options.outHeight; 
//If you want, the MIME type will also be decoded (if possible) 
String type = options.outMimeType; 

HTH

+1

Làm cách nào để nhận giá trị Mật độ? – breceivemail

+0

Công việc đó khi options.inJustDecodeBounds = false; – Cabezas

+1

trả về 0 cho chiều cao và chiều rộng – AlwaysConfused

2

Trên thực tế, có một cách khác để giải quyết vấn đề này. Sử dụng cách dưới đây, chúng ta có thể tránh được sự cố với tệp và URI.

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
ParcelFileDescriptor fd = mContext.getContentResolver().openFileDescriptor(u, "r"); // u is your Uri 
BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor(), null, options); 
+0

Xem thêm http://stackoverflow.com/questions/23867823/get-image-width-and-height-from-uri?lq=1. – CoolMind

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