【发布时间】:2014-02-23 07:14:47
【问题描述】:
我目前有一份调查问卷,其中每个问题都动态添加到数据库中,然后应用程序会收到该问卷以获取说明。当它使用相机时,它可以很好地设置图像,使用代码:
void setResponse(Bitmap image) {
captureButton.setImageBitmap(image);
}
够简单吧?当我单击更新时,要将其保存到 sqlite db,我使用以下命令将其保存为 base64 字符串:
String getResponse() {
String response = "";
try
{
Bitmap bitmap = Bitmap.createBitmap(captureButton.getDrawingCache());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
byte[] image = stream.toByteArray();
response = Base64.encodeToString(image, 0);
}
catch (Exception e)
{
Log.e("Capture image error", e.getMessage());
e.printStackTrace();
}
return response;
}
然后当我回到调查问卷时,如果它已经有数据,它只是使用这个加载它:
void setResponse(String response) {
byte[] decodedString = Base64.decode(response, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
captureButton.setImageBitmap(decodedByte);
}
我目前使用gestureOverlayView 的签名系统几乎相同。但为此,我在 CameraQuestionView.xml 文件中定义了一个占位符图像:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:src="@drawable/placeholder"
android:id="@+id/cameraQuestionCaptureButton"/>
但由于某种原因,在加载备份时,会显示占位符图像而不是数据库中保存的图像。我尝试使视图无效,但这也不起作用。
谢谢!
【问题讨论】:
-
您是否尝试过不在xml上设置占位符?有同样的效果(ImageView没有出现?)?
-
啊!是的,没有出现!我以为会的。似乎没有在数据库中设置它,如果是这样的话,并且占位符实际上并没有造成伤害。猜猜我的问题应该改为,为什么不将其保存在数据库中,哈哈?
-
大声笑,也许:) ...尝试调试 setResponse 方法,您也可以尝试从资源中加载位图,以测试 setImageBitmap 是否正常工作
-
好吧,我花了很长时间才找到它。当它设置响应时,我必须调试每一行,它没有设置文本,所以我检查它是否从数据库接收到任何东西,并且没有条目,所以我检查了一堆其他的东西,瞧!这是非常愚蠢的事情,我忘记将drawingcacheenabled设置为true,所以它可以抓取实际图像。哇,好不容易才找到!但是,嗯,现在可以了!
标签: android image view bitmap camera