关于获取imageview上的图片,保存到相册并通知相册自动更新

本文介绍了一种方法,用于将Android中ImageView显示的图片保存到设备相册的具体实现过程,包括设置Bitmap缓存、创建文件及使用FileOutputStream进行图片保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天提出的一个需求,从Imageview获取图片保存到本地相册,虽然不知道这么搞有什么意义不过既然产品提了,就做呗

第一次碰到这种需求,不难,写下来做个记录,直接放大招(代码)

public class MainActivity extends Activity implements OnClickListener {

   private String strPath;
   private File sdCardDir;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      findViewById(R.id.button).setOnClickListener(this);
   }

   @Override
   public void onClick(View v) {
      if (v.getId() == R.id.button) {
         ImageView iv = (ImageView) findViewById(R.id.image);
         iv.setDrawingCacheEnabled(true);
         Bitmap b = Bitmap.createBitmap(iv.getDrawingCache());
         iv.setDrawingCacheEnabled(false);
//       strPath = "/testSaveView/" + UUID.randomUUID().toString() + ".png";
         strPath = Environment.getExternalStorageDirectory()
               + "/DCIM/Camera/" +"1.jpg";
         boolean flag = false;
         if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            sdCardDir = Environment.getExternalStorageDirectory();
            FileOutputStream fos = null;
            try {
               File file = new File(sdCardDir, strPath);
               if (!file.getParentFile().exists()) {
                  file.getParentFile().mkdirs();
               }
               fos = new FileOutputStream(file);
               b.compress(CompressFormat.JPEG, 100, fos);
               fos.flush();
               flag = true;
            } catch (Exception e) {
               Log.e("Save test", "save bitmap error : " + e);
            } finally {
               try {
                  fos.close();
               } catch (IOException e) {
                  Log.e("Save test", "finally error : " + e);
               }
            }
         }
         Log.d("Tag", "地址" + sdCardDir.toString());
         MediaScannerConnection.scanFile(MainActivity.this, new String[]{sdCardDir.toString()}, null, null);
         Toast.makeText(MainActivity.this, (flag ? "�����ɹ" : "����ʧ��"), Toast.LENGTH_LONG).show();
      }

   }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值