Вращение BMP и отображение его правой стороной вверх - PullRequest
2 голосов
/ 17 ноября 2010

У меня есть приложение, которое привязывает изображение и отображает изображение в режиме просмотра изображений. Проблема в том, что я могу сделать снимок только в альбомной ориентации, чтобы bmp отображался справа вверху. Есть ли способ повернуть его вправо вверх, если снимок сделан в портретном режиме /

Спасибо!

Вот код, который я использую для размещения изображения в представлении img -

  private void processCameraImage(Intent intent) {
    setContentView(R.layout.detectlayout);
    ((Button) findViewById(R.id.detect_face)).setOnClickListener(btnClick);

    ImageView imageView = (ImageView) findViewById(R.id.image_view);

    cameraBitmap = (Bitmap) intent.getExtras().get("data");

    imageView.setImageBitmap(cameraBitmap);

Существует кнопка обнаружения лиц, которая обнаружит наличие лиц.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Вот как вы будете вращать BMP:

   private Bitmap rotateImage(Bitmap b, float angle)
   {
      //create a new empty bitmap to hold rotated image
       Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
       //make a graphics object from the empty bitmap
       Graphics g = Graphics.FromImage(returnBitmap);
       //move rotation point to center of image
       g.TranslateTransform((float)b.Width/2,(float)b.Height / 2);
       //rotate
       g.RotateTransform(angle);
       //move image back
       g.TranslateTransform(-(float)b.Width/2,-(float)b.Height / 2);
    }
0 голосов
/ 03 августа 2011

Вот код, который я использовал onActivityResult () в своей деятельности. Возвращаемое намерение было для выбора изображения типа image / *. Хорошо работает для меня!

Uri imageUri = intent.getData();
                String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
                Cursor cur = managedQuery(imageUri, orientationColumn, null, null, null);
                int orientation = -1;
                if (cur != null && cur.moveToFirst()) {
                    orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0]));
                }  
                Matrix matrix = new Matrix();
                matrix.postRotate(orientation);
...