2015-11-17 12 views
5

Potrzebuję uzyskać obraz z karty SD, utworzyć, obrócić i zapisać zmieniony obraz. Próbuję użyć tego koduJak zapisać dane Exif po replikacji bitmap w Androidzie

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(); 

Ale nie mogę zapisać zmian w ExifInterface. To po prostu wyczyść wszystkie tagi.

+0

co dokładnie chcesz? rotacja obrazu w oparciu o dane exif lub chcesz zapisać swoje dane w exif? – user1140237

Odpowiedz

2

tylko metoda saveAttributes Zapisz dane znacznika w pliku JPEG.

Sprawdź ten link

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

Więc jeśli zmienisz kod ten

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

do tego

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

to zaoszczędzić danych EXIF ​​tag

Nadzieja ta pomoc

Daj mi znać w przypadku każdej innej kwestii

+0

dziękuję, to mi szkodzi mój problem – couldDog

+1

@ CouldDog Cieszę się, jeśli uważasz, że moja odpowiedź jest pomocna przyjmij moją odpowiedź, więc inne też uzyskać pomoc stąd dzięki – Sandy

+1

@ CouldDog jest moją odpowiedzią jest to, czego potrzebujesz lub coś innego wypróbowałeś, że działa dla ciebie, ponieważ wciąż nie przyjąłeś mojej odpowiedzi – Sandy

Powiązane problemy