2012-10-29 39 views
5

Tôi đang xử lý các hình ảnh camera trong ứng dụng của mình mà thực sự nhận được dưới dạng ứng dụng máy ảnh urls.The ở chế độ dọc.Đây là hình ảnh đôi khi được xoay trái hoặc xoay phải.I biết rằng chúng ta có thể sử dụng EXIF ​​cho định hướng hình ảnh bình thường từ gallery thì chúng ta có thể kiểm tra giá trị exif và làm thích hợp changes.Basicaly đây là mã cho exifcách áp dụng định dạng EXIF ​​cho hình ảnh làm url trong android

ExifInterface exif = new ExifInterface("filepath"); 
exif.getAttribute(ExifInterface.TAG_ORIENTATION); 

vì vậy, câu hỏi của tôi là filepath trong trường hợp của tôi là gì, có phải là chính url đó hay tôi nên tạo một tệp cho điều đó .. Bất kỳ trợ giúp nào sẽ được đánh giá cao ...

Trả lời

1

Đầu tiên, bạn phải nhận được Uri trong onActiviryResult, như ở đây Get image Uri in onActivityResult after taking photo?
Sau đó, khi bạn có Uri bạn có thể nhận được filepath như thế này: String filepath = getRealPathFromURI (someUri);

public String getRealPathFromURI(Uri contentUri) { 
    String res = null; 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null); 
    if(cursor != null && cursor.moveToFirst()){; 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     res = cursor.getString(column_index); 
    } 
    cursor.close(); 
    return res; 
} 


Sau đó, nếu filepath không rỗng và không rỗng, bạn có thể lấy dữ liệu EXIF, kiểm tra và xoay ảnh nếu cần.
Hy vọng điều đó sẽ hữu ích.

+0

cách áp dụng định dạng EXIF? – NarendraJi

+0

Bạn phải nhận định hướng, như: int pictureOrientation = exif.getAttributeInt (ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); Sau đó, bạn phải kiểm tra: nếu (pictureOrientation == ExifInterface.ORIENTATION_ROTATE_180) {... làm mã quay của bạn tại đây} Bạn cũng phải kiểm tra các thông số ExifInterface.ORIENTATION_ * khác. – Evgen

+0

Được rồi, thnx cho thư trả lời – NarendraJi

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