2017-02-22 15 views
1

イメージをキャプチャしてサーバに送信する機能を実装しました。サーバへの送信時に画像が90度に回転しました

ポートレートモードで写真を撮ってサーバーに送信すると、画像は常に90度左に回転します
しかし、これを水平モードで繰り返すとすべて正常です。

私は考えを思いついた 私はビットマップオブジェクトに画像を回し、幅と高さを持っています。 私は肖像画モードを試したときに、サーバーに送る前に画像を90度回転させるしかなかった。 しかし、それは決してうまくいかなかった。(ポートレートモードの画像もまた、 )

誰も私のためにいくつかのヒントを与えることができますか?

これはカメラ機能を呼び出すためのものです。

public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 

    if(resultCode != RESULT_OK) 
     return; 

    if(requestCode == PICK_FROM_CAMERA){ 

     imageUri = data.getData(); 
     Log.d("메시지", "uri = "+imageUri); 


     Cursor c = this.getContentResolver().query(imageUri, null, null, null, null); 
     c.moveToNext(); 
     absolutePath = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA)); 
    } 
} 

私はabsolutePath を使用してFileオブジェクトを作った後、それをサーバーに送りました。

fileInputStream = new FileInputStream(file); 
     int bytesAvailable = fileInputStream.available(); 
     int maxBufferSize = 1024; 
     int bufferSize = Math.min(bytesAvailable, maxBufferSize); 
     byte[] buffer = new byte[bufferSize]; 

     int bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     while (bytesRead > 0) { 

     DataOutputStream dataWrite = new  DataOutputStream(con.getOutputStream()); 
      dataWrite.write(buffer, 0, bufferSize); 
      bytesAvailable = fileInputStream.available(); 
      bufferSize = Math.min(bytesAvailable, maxBufferSize); 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     } 
     fileInputStream.close(); 

     wr.writeBytes("\r\n--" + boundary + "--\r\n"); 
     wr.flush(); 

答えて

1

private Bitmap fixOrientation(Bitmap bitmap) { 
    ExifInterface ei = null; 
    Bitmap selectedBitmap; 
    try { 
     ei = new ExifInterface(mCurrentPhotoPath); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 

    switch (orientation) { 
     case ExifInterface.ORIENTATION_ROTATE_90: 
      selectedBitmap = rotateImage(bitmap, 90); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_180: 
      selectedBitmap = rotateImage(bitmap, 180); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_270: 
      selectedBitmap = rotateImage(bitmap, 270); 
      break; 
     case ExifInterface.ORIENTATION_NORMAL: 
      selectedBitmap = bitmap; 
      break; 
     default: 
      selectedBitmap = bitmap; 
    } 
return selectedBitmap; 
} 
+0

おかげで、次の方法を試してみてください!できます! – heesu

+0

私はしました。しかし、私は評判が低いので、私の投票はスコアが変わらないと言います – heesu

+0

ありがとうございます。ハッピーコーディング:) –

関連する問題