2012-01-28 2 views
1

Я делаю снимок с активностью камеры, а затем попытаюсь прочитать его из сохраненного местоположения. К сожалению, Bitmap returnd:Android: BitmapFactory.decodeFile/OpenCV возвращает invaild Bitmap

Bitmap bimage = BitmapFactory.decodeFile(path); 

имеет высоту и ширину = -1. Я использую OpenCV и когда я прочитал изображение с

Mat img = Highgui.imread(path); 

я получить правильную матрицу. Хотя я не могу преобразовать его в растровое изображение. При выполнении

bmp = Bitmap.createBitmap(img.cols(), img.rows(), Config.ARGB_8888); 
Utils.matToBitmap(img, bmp); 

Я получаю тот же результат снова: Растровое изображение с шириной и высотой = -1. Нужно ли следить за форматом изображения? Могу ли я установить это на камеру? Не должно быть

BitmapFactory.decodeFile(path); 

автоматически понимает, что такое формат?

Я бегу это на Galaxy S Samsung с Android 2.3.1 и OpenCV 2.3.1

Спасибо за вашу помощь.

+0

Samsung имеет некоторые проблемы с намерением камеры http://stackoverflow.com/questions/7031374/photo-capture-int ent-cause-nullpointerexception-on-samsung-phones-only/7031422 # 7031422 – Abhi

ответ

0

Samsung имеет некоторые проблемы с умыслом камеры Photo capture Intent causes NullPointerException on Samsung phones only

Попробуйте этот путь

// для вызова камеры

String _path = Environment.getExternalStorageDirectory() 
        + File.separator + "TakenFromCamera.png"; 
      File file = new File(_path); 
      Uri outputFileUri = Uri.fromFile(file); 
      Intent intent = new Intent(
        android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
      startActivityForResult(intent, 1212); 

// в деятельности onResult

if (requestCode == 1212) { 
      String _path = Environment.getExternalStorageDirectory() 
        + File.separator + "TakenFromCamera.png"; 
      mBitmap = BitmapFactory.decodeFile(_path); 
      if (mBitmap == null) { 
      } else { 
       Intent intent = new Intent(AYGCamActivity.this, 
         myGalleryImage.class); 

       startActivity(intent); 
      } 

     } 
+0

Спасибо. Это сработало :). Я в значительной степени сделал это, за исключением того, что использовал конец .jpg. Считаете ли вы, что это может вызвать проблему, так как тогда декодер попытался декодировать JPEG, когда он был фактически PNG ... –