java.lang.IllegalStateException: не удается обработать ошибку переработанного растрового изображения

1

Я пытаюсь использовать следующий код для получения растрового изображения, которое берется с камеры. Я использовал эту концепцию, потому что добавляю изображение как водяной знак к снимку. Так что я просто делаю операцию рисованием в виде растрового изображения.

В то время как я делаю это, я получаю следующую ошибку (не удается отправить по ошибке возвращенную растровую карту)

Я хочу отправить это растровое изображение в другое действие.

Как я могу проверить, получаю ли я изображение или нет?

else if(v.equals(findViewById(R.id.ok_button))){


                topbar.setVisibility(View.GONE);
                menubar.setVisibility(View.GONE);
                bottom.setVisibility(View.GONE);

                View s = ml.getRootView();
                s.setDrawingCacheEnabled(true);

                b = s.getDrawingCache();
                Log.e("ok","ok");
                Intent i=new Intent(CameraActivity.this,Update.class);
                 i.putExtra("data",b);
                 startActivity(i);
      //           s.setDrawingCacheEnabled(false);
        //         s.setVisibility(View.GONE);
                 finish();

Спасибо

  • 0
    Ваше растровое изображение перерабатывается до его отправки. проверьте bitmap.isRecycled ()
  • 0
    Как решить эту проблему?
Показать ещё 1 комментарий
Теги:

1 ответ

4

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

Во-первых, убедитесь, что вы получили желаемое изображение при вызове метода getDrawingCache. Проверьте этот пост для возможной причины, если вы не получаете изображение.

Во-вторых, убедитесь, что изображение не возвращается. Это может быть не так, как IllegalStateException, говоря, что вы не можете посылить переработанное растровое изображение, было бы выброшено, и ваше приложение потерпит крах. Если ваше изображение переработано, просто сделайте его копию и поместите копию в Bundle. В качестве примечания стороны, вызов setDrawingCacheEnabled(false) вызовет recycle().

Третий (и последний), убедитесь, что изображение переходит к другому действию. Ошибки, такие как десериализация неправильных полей или неправильная переменная, очень распространены.

Если все вышеизложенное идет хорошо, и причина вашего происшествия в приведенном выше коде, вы не должны иметь только черный экран. Если вы все еще получаете черный экран, то, скорее всего, ошибка находится в действии Update, а не в том, что отправляет изображение.

РЕДАКТИРОВАТЬ: Неправильный вопрос.

Вы можете получить исключение, потому что изображение может (не может подтвердить это) быть сериализовано после увольнения. Если это так, просто поместите копию Bitmap в Intent вместо самой Bitmap следующим образом:

i.putExtra("data",b.copy(b.getConfig(), b);

Этот вопрос помог мне понять это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню