2015-11-17 10 views
5

Ho bisogno di ottenere l'immagine dalla scheda SD, creare, ruotare e salvare l'immagine modificata. Io cerco di usare questo codiceCome salvare i dati Exif dopo la copia bitmap in 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(); 

ma non posso salvare il cambiamento in ExifInterface. Questo cancella tutti i tag.

+0

cosa esattamente si vuole? rotazione immagine basata su dati exif o vuoi salvare i tuoi dati in exif? – user1140237

risposta

2

saveAttributes solo metodo Salvare i dati dei tag nel file JPEG.

controllare questo link

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

Quindi, se si modifica il codice di questo

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

a questo

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

che vi farà risparmiare i dati exif

Spero che questo aiuto

Fammi sapere in caso di qualsiasi altra questione

+0

grazie, slove il mio problema – couldDog

+1

@couldDog Sono contento, Se trovi la mia risposta utile per favore accetta la mia risposta in modo da ottenere anche altri aiuto da qui grazie – Sandy

+1

@couldDog è la mia risposta è quello che ti serve o altra cosa hai provato che funziona per te perché non hai ancora accettato la mia risposta – Sandy

Problemi correlati