我试图使用以下代码来获取图像的位图,这是从相机中获取的.我使用这个概念,因为我将图像作为水印添加到拍摄的照片中.所以我只是将活动绘制为位图.
虽然我这样做我得到以下错误(无法包裹回收位图错误发生)
我想将此位图发送到另一个Activity.
如何检查我是否收到图像?
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();
Run Code Online (Sandbox Code Playgroud)
谢谢
一点点"迟到",但我最近遇到了类似于这个问题的问题,其他有同样问题的人可能会找到你的问题,所以最好有一个答案.
首先,确保在调用getDrawingCache
方法时获得所需的图像.如果您没有获得图像,请查看此帖子以了解可能的原因.
其次,确保图像不被回收.这可能不是这种情况,因为IllegalStateException
,如果你不能包裹一个可回收的位图,就会抛出,你的应用程序就会崩溃.如果您的图像确实被回收,只需复制它并将副本放入Bundle
.作为附注,呼叫setDrawingCacheEnabled(false)
将呼叫recycle()
.
第三(和最后),确保图像通过其他活动.诸如反序列化错误字段或错误变量之类的错误非常常见.
如果以上所有内容都顺利进行,并且导致这种情况发生在上面的代码中,则不应该只显示黑屏.如果你仍然得到一个黑屏,那么很可能是bug在Update
活动中,而不是在发送图像的那个.
编辑:误读了这个问题.
您可能会收到异常,因为在触发intent之后图像可能(无法确认)被序列化.如果是这种情况,只要把的副本Bitmap
上Intent
,而不是Bitmap
本身是这样的:
i.putExtra("data",b.copy(b.getConfig(), b);
Run Code Online (Sandbox Code Playgroud)
这个问题让我意识到了这一点.
归档时间: |
|
查看次数: |
5402 次 |
最近记录: |