2015-11-17 23 views
5

Tôi cần lấy hình ảnh từ thẻ sd, tạo, xoay và lưu hình ảnh đã thay đổi. Tôi cố gắng sử dụng mã nàyCách lưu dữ liệu Exif sau bitmap coppression trong Android

Bitmap original = BitmapFactory.decodeFile(file.getAbsolutePath()); 

    ExifInterface originalExif = new ExifInterface(file.getAbsolutePath()); 
    int orientation = originalExif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); 

    Matrix matrix = new Matrix(); 
    int rotate = 90; 
    if(orientation == ExifInterface.ORIENTATION_ROTATE_90){ 
     rotate = 180; 
    }else if(orientation == ExifInterface.ORIENTATION_ROTATE_180){ 
     rotate = 270; 
    }else if(orientation == ExifInterface.ORIENTATION_ROTATE_270){ 
     rotate = 0; 
    } 

    matrix.postRotate(rotate); 

    Bitmap bitmap = Bitmap.createBitmap(original, 0, 0, original.getWidth(), original.getHeight(), matrix, true); 

    try { 
     FileOutputStream out = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 
     out.flush(); 
     out.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     original.recycle(); 
     bitmap.recycle(); 
    } 


    ExifInterface newExif = new ExifInterface(file.getAbsolutePath()); 

    newExif.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(ExifInterface.ORIENTATION_ROTATE_90)); 

    newExif.saveAttributes(); 

Nhưng tôi không thể lưu thay đổi trong ExifInterface. Điều này chỉ rõ ràng tất cả các thẻ.

+0

chính xác bạn muốn gì? hình ảnh xoay dựa trên dữ liệu exif hoặc bạn muốn lưu dữ liệu của bạn trong exif? – user1140237

Trả lời

2

lưuChỉ phương pháp chỉ thuộc tính Lưu dữ liệu thẻ vào tệp JPEG.

kiểm tra liên kết này

http://developer.android.com/reference/android/media/ExifInterface.html#saveAttributes()

Vì vậy, nếu bạn thay đổi mã của bạn này

bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 

này

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 

nó sẽ giúp bạn tiết kiệm dữ liệu thẻ Exif

Hy vọng điều này giúp đỡ

Hãy cho tôi biết nếu có bất kỳ vấn đề nào khác

+0

cảm ơn, nó slove vấn đề của tôi – couldDog

+1

@couldDog Tôi vui, Nếu bạn tìm thấy câu trả lời của tôi hữu ích xin vui lòng chấp nhận câu trả lời của tôi vì vậy khác quá giúp đỡ từ đây nhờ – Sandy

+1

@couldDog là câu trả lời của tôi là những gì bạn cần hoặc điều khác có bạn đã cố gắng mà các công trình vì bạn vẫn chưa chấp nhận câu trả lời của tôi – Sandy

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