Android: BitmapFactory.decodeFile / OpenCV возвращает неиспользованное растровое изображение
Я делаю снимок с активностью камеры, а затем пытаюсь прочитать его из сохраненного местоположения. К сожалению, растровое изображение возвращается:
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 );
автоматически понять, что это за формат?
Я запускаю это на Samsung Galaxy S с Android 2.3.1 и OpenCV 2.3.1
Спасибо за вашу помощь.
1 ответ
У Samsung есть некоторые проблемы с намерением камеры. Захват фотографий. Намерение вызывает исключение NullPointerException только на телефонах Samsung.
Попробуй так
// вызвать камеру
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);
}
}