【发布时间】:2014-07-17 16:19:11
【问题描述】:
所以我有这个奇怪的问题。 9/10 次可以完美运行,但那 10% 根本行不通。
我试图简单地拥有一个可以缩放和平移的 ImageView。效果很好-然后我尝试将 imageView 保存到手机本身。这是大多数情况下它可以工作的地方,但有时它会将图像保存为黑屏......而不是 ImageView 上实际显示的内容。
这是我保存 ImageView 的代码:
protected void saveZoomedImage(){
//create ImageView Bitmap
RelativeLayout tableContent;
tableContent=(RelativeLayout)findViewById(R.id.imgHolder);
tableContent.measure(MeasureSpec.makeMeasureSpec(tableContent.getLayoutParams().width, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(tableContent.getLayoutParams().height,MeasureSpec.EXACTLY));
tableContent.setDrawingCacheEnabled(true);
final Bitmap screenshot = Bitmap.createBitmap(tableContent.getDrawingCache());
tableContent.setDrawingCacheEnabled(true);
//save file
File folder = new File(Environment.getExternalStorageDirectory () + "/thedir");
if(!folder.exists()){
folder.mkdir();
}
String exsistingFileName=Environment.getExternalStorageDirectory().getAbsolutePath() + "/thedir";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(exsistingFileName + "/image.jpg");
screenshot.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
它可以很好地保存文件,但它似乎由于某种原因在一小部分时间内没有捕获图像。
【问题讨论】:
-
您致电
tableContent.setDrawingCacheEnabled(true);两次。你第二次说的是 False 吗? -
啊,是的,哈哈-认为这可能导致了这个问题吗?
-
我不知道。这是可能的,我想。这是唯一让我印象深刻的事情。如果您在第 10 次收到错误消息,则在您编辑帖子以包含它时可能会有所帮助。
-
是的,不幸的是,当它节省黑色空间时没有崩溃或错误消息 - 我会尝试这个更改。谢谢,
标签: android bitmap imageview save