2017-03-10 3 views
1

Nach Bild von der Kamera nehmen ich in gridview bin angezeigt wird. Aber wenn seine Bestücken in Raster seine Ausrichtung ändert und mit dieser Orientierungsänderung auf Server speichern.android Bildausrichtung ändert sich von der Kamera Intent (oder die Auswahl aus der Galerie

I . einen Code gefunden, der das Bild ohne Orientierung zu füllen geholfen, aber wenn auf Server seine Ausrichtung nach wie vor Wechsel spart Unten ist der Code das Bild ohne Orientierung zu setzen geholfen:

Bitmap resultBitmap = BitmapFactory.decodeStream(new FileInputStream(f), null, o2); 
     Bitmap returnBitmap = resultBitmap; 
     try { 
      ExifInterface exifInterface = new ExifInterface(filePath); 
      int orientation =                   exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,  ExifInterface.ORIENTATION_UNDEFINED); 
      switch (orientation) { 
       default: 
        break; 
       case ExifInterface.ORIENTATION_ROTATE_90: 
        returnBitmap = rotateImage(resultBitmap, 90); 
        break; 
       case ExifInterface.ORIENTATION_ROTATE_180: 
        returnBitmap = rotateImage(resultBitmap, 180); 
        break; 
       case ExifInterface.ORIENTATION_ROTATE_270: 
        returnBitmap = rotateImage(resultBitmap, 270); 
        break; 
       case ExifInterface.ORIENTATION_NORMAL: 
        break; 

      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return returnBitmap; 

Also muss ich zeigen das Bild in Raster mit Ausrichtung, in dem es aufgenommen wird und es sollte in meinem Server speichern (wo ich in meiner Website sehen kann) mit der gleichen Ausrichtung

Antwort

0

Haben Sie versuchen, Bild nach Bild zu drehen, anstatt es in Datei zu speichern?

Get Orientierung Kameradisplay:

private static int getCameraDisplayOrientation(int cameraId, Activity activity) { 
     int rotation = ((WindowManager)activity.getSystemService(Context.WINDOW_SERVICE)) 
       .getDefaultDisplay().getRotation(); 
     android.hardware.Camera.CameraInfo info = 
       new android.hardware.Camera.CameraInfo(); 
     android.hardware.Camera.getCameraInfo(cameraId, info); 
     int result; 
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
      result = (info.orientation + rotation) % 360; 
      result = (360 - result) % 360; // compensate the mirror 
     } else { // back-facing 
      result = (info.orientation - rotation + 360) % 360; 
     } 
     return result; 
    } 

Und dann, zu dekodieren Byte-Array in Bitmap-Rotation Grad unter Verwendung bekam von Kamera-Display Orientierung:

public static Bitmap decodeByteArray(byte[] data, float rotationDegree) { 
    try { 
     Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length); 
     if (rotationDegree != 0) { 
      bm = createRotatedBitmap(bm, rotationDegree); 
     } 
     return bm; 
    } catch (OutOfMemoryError e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

Hope this Hilfe.

Verwandte Themen