2015-02-11 3 views
0

Это сделайте снимок с камеры, и я просто хочу сохранить его с правильной ориентацией.Сохраните повернутый растровый рисунок

Я знаю, что их довольно много сообщений об этой теме, но даже после прочтения всех ответов, которые я застрял, чтобы сохранить мой повернутый растровый рисунок.

Так вот си мой код:

Bitmap bitmap = BitmapFactory.decodeFile(pictureFile 
      .getAbsolutePath()); 
    Matrix matrix = new Matrix(); 
    matrix.postRotate(finalOrientation); 
    Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth(), bitmap.getHeight(), true); 
    Bitmap rotatedBitmap = Bitmap.createBitmap(scaledBitmap, 0, 0, scaledBitmap.getWidth(), scaledBitmap.getHeight(), matrix, true); 

    findViewById(R.id.image_preview).setVisibility(View.VISIBLE); 
    ((ImageView) findViewById(R.id.image_preview)).setImageBitmap(rotatedBitmap); 
    findViewById(R.id.surfaceView).setVisibility(View.GONE); 

    if(outputStream != null) 
    { 
     rotatedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 

     try { 
      outputStream.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

Как вы можете видеть, что я показать мое растровое изображение на виде изображения, чтобы убедиться, что он находится в правильной ориентации, и это. Но это только когда я сохраняю (сжимаю) его, чтобы он возвращался к своему первоначальному состоянию.

Спасибо заранее!

+0

я не сделал хорошо, пожалуйста, уточните больше? Я имею в виду, в чем проблема с вашим кодом? –

+0

Проблема в том, что я делаю снимок в портретной ориентации и сохраняю его в альбомной ориентации. И я хотел показать, что когда я показываю свой растровый образ в imageView, она находится в правильной ориентации (на экране, но не в проводнике файлов). Надеюсь, я достаточно ясен:/ – MHogge

+0

Пожалуйста, используйте _it_ для вещей и программных объектов; _he_ и _she_ предназначены для людей. – 18446744073709551615

ответ

0

Это не ответ, но я хочу, чтобы опубликовать некоторый код, который может пролить свет на то, что происходит, и он не вписывается в комментарий:

ExifInterface exif; 
int rotate = 0; 
try { 
     exif = new ExifInterface (file.getAbsolutePath()); 
     int exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 
     switch (exifOrientation) { 
     case ExifInterface.ORIENTATION_ROTATE_90: rotate = 1 /*90*/; break; 
     case ExifInterface.ORIENTATION_ROTATE_180: rotate = 2 /*180*/; break; 
     case ExifInterface.ORIENTATION_ROTATE_270: rotate = 3 /*270*/; break; 
     } 
} catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
} 
Log.d(TAG,"~~~~~~ exifOrientation: rotate="+rotate); 
Смежные вопросы