Проблема с Android с decodeBitmap с ACTION_IMAGE_CAPTURE - PullRequest
0 голосов
/ 20 сентября 2011

Я пытаюсь заставить мое приложение сделать снимок и вернуть его для использования. Однако это вызывает исключение как в эмуляторе, так и в Nexus One.

Вот мой код:

private File temporaryCameraFile = new File("/sdcard/tmp.bmp");

При выборе из меню для съемки:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(temporaryCameraFile));
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

в onActivityResult ()

if(resultCode == RESULT_OK){
    Bitmap cameraPicture = decodeFile(temporaryCameraFile);

    // resize to fit screen and add to queue to be drawn
    if (cameraPicture != null)
        if ((cameraPicture.getWidth() > 0) && (cameraPicture.getHeight() > 0))
            page.SetBackground(ResizeImageToFit(cameraPicture));
}

decodeFile ()

private Bitmap decodeFile(File f){
    try {
        //decode image size
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f),null,o);

        //decode with inSampleSize
        o.inJustDecodeBounds = false;
        Bitmap retval = BitmapFactory.decodeStream(new FileInputStream(f), null, o);

        return retval;
    } catch (FileNotFoundException e) {
        Log.e("decodeFile()", e.toString());
        return null;
    }
}

В decodeFile () первый декодер правильно возвращает границы. Однако, когда я вызываю его во второй раз, я получаю следующую ошибку как на эмуляторе, так и на Nexus One. Я попытался обновить файл decodeFile, чтобы выполнить только основное декодирование без метода inJustDecodeBounds, но это также не удалось. Кроме того, я вытащил файл с устройства вручную, и это действительное растровое изображение.

  09-20 15:30:58.711: ERROR/AndroidRuntime(332): Caused by: java.lang.IllegalArgumentException: width and height must be > 0

Любая помощь будет оценена.

Спасибо.

1 Ответ

0 голосов
/ 01 октября 2011

Используйте преобразователь содержимого для декодирования растрового изображения. Обратитесь к ответу на Намерение камеры Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...