我尝试从图像视图将图像保存到画廊,但出现文件未找到异常错误
我尝试的代码,但得到文件未找到异常。
如果你听不懂我的英语,我很抱歉。
save.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
BitmapDrawable draw = (BitmapDrawable) mainImage.getDrawable();
Bitmap bitmap = draw.getBitmap();
try{
FileOutputStream outStream = null;
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/MyFolder");
dir.mkdirs();
String fileName = String.format("%d.jpg", System.currentTimeMillis());
File outFile = new File(dir, fileName);
outStream = new FileOutputStream(outFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(Uri.fromFile(outFile));
sendBroadcast(intent);
}
catch (Exception e){
e.printStackTrace();
Toast.makeText(MainActivity.this,e.toString(),Toast.LENGTH_SHORT).show();
}
}
});
我是一个初学者,所以我不知道如何解决这个问题。请帮助我
2条答案
按热度按时间mspsb9vt1#
“让我们从头开始"
**步骤1:**在清单中添加“读取”和“写入”权限
**第2步:**为ImageView中的图像制作位图
**第3步:**现在有一个不同的机制来保存文件在以下和以上Android版本Q
在下方Q:
其中AppDirectory是您想要的目录名称,而name是偏好使用即时日期和时间的影像名称。在此方法中,
1.首先,在外部存储器中创建目录。
1.然后创建您的图像文件(尝试使其唯一)
1.最后一步是将位图转换为字节数组,并写入您在中创建的文件(第2点)
在Android Q及以上版本中:
创建内容解析器并设置内容值(如文件名、类型和位置),然后将内容值传递给内容解析器,并将内容解析器传递给FileOutputStream/ OutputStream。现在,在输出流上写入位图
快乐编码
rdrgkggo2#
Kotlin方式:您可以使用此扩展功能将文件保存在存储器中
样本使用: