Камера Android в портретном режиме на SurfaceView и сохранить снимок

#android #camera #android-camera

#Android #камера #android-камера

Вопрос:

мой API-интерфейс 2.2, поэтому я использовал camera.setDisplayOrientation (90), чтобы сделать предварительный просмотр портретным, это работает очень хорошо, но когда я сохраняю изображение на sd, изображение получается горизонтальным, а не портретным.когда я использовал :

 @Override
    protected Bitmap doInBackground(String... params) {

        int w = bmp.getWidth();
        int h = bmp.getHeight();
        // Setting post rotate to 90
        Matrix mtx = new Matrix();
        mtx.postRotate(90);
        // Rotating Bitmap
        Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
        bmp.recycle();
        return rotatedBMP;
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        dialog.dismiss();

        ivNewPhoto.setImageBitmap(result);
        resultPath = ConstValue.MY_ALBUM_DIR   "/"   System.currentTimeMillis()   ".jpg";
        ImageFile.writePhotoJpg(result), resultPath);
        previewView.setVisibility(View.VISIBLE);
    }
  

bmp — это снимок, но у меня есть ошибки:

 Activity com.android.SuperPictureSearch.photo.PhotoActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43abb200 that was originally added here
  

можете ли вы сказать мне, как сохранить изображение в портретном режиме, спасибо

Ответ №1:

  public void onPictureTaken(byte[] data, Camera camera) {

          Bitmap mutableBitmap = null;
          BitmapFactory.Options options = new BitmapFactory.Options();
          Bitmap  bm= BitmapFactory.decodeByteArray(data, 0, data.length, options);
           mutableBitmap =Bitmap.createScaledBitmap( bm , h, w,true);
             bm.recycle();
                Matrix matri = new Matrix();
                matri.postRotate(90);

                Bitmap  mBitmap = Bitmap.createBitmap(mutableBitmap, 0, 0, mutableBitmap.getWidth(), mutableBitmap.getHeight(), matri, true);
                mutableBitmap.recycle();
  

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