我目前有一份调查问卷,其中每个问题都是在数据库中动态添加的,然后应用程序会收到该问题以获取指示。当它使用相机时,它使用以下代码设置图像:
void setResponse(Bitmap image) {
captureButton.setImageBitmap(image);
}
够简单吧?当我点击更新,将其保存到sqlite数据库时,我使用它将其保存为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"/>
但出于某种原因,在加载备份时,会显示占位符图像,而不是db中保存的图像。我尝试使视图无效,但这也无效。
谢谢!
答案 0 :(得分:1)
忘了做
captureButton.setDrawingCacheEnabled(true);
保存我的回复时,首先没有保存位图。我花了一段时间追查,我怀疑这对其他人有帮助,因为这只是另一个问题的愚蠢错误。