本文实例讲述了Android开发实现保存图片到手机相册功能。分享给大家供大家参考,具体如下:
有一种很常见的需求,当保存图片的时候,客户需要在相册里面看到那张图片。有时候确实是保存成功了(通过IO流将图片写入了SDCard),但打开相册却看不到那张图片,需要在文件管理软件上才能找到那张图片,在网上找了许多文章,貌似都保存不到相册那里,这应该就是手机品牌的原因,有的品牌的手机能显示在相册里,有的品牌的手机却不能。解决这种问题,最简单粗暴的方法是,用那台手机拍一张照片,然后找到它,查看它的路径详情,直接根据路径用IO流写入,Android SDK的构建。品牌变量为当前手机的品牌,根据不同的品牌来做兼容处理,如果有读者用了这篇文章的代码还是不能在相册显示,可以对着这个思路来做兼容。另外值得一提的是,图片格式需要为JPEG格式才能显示在相册中,我们拍的照片也是JPEG格式的。下面用代码来实现上述的想法。
鉴于目前手机的版本普遍为Android 6.0以上,读写外部存储文件都需要动态申请权限。这部分代码可以在当前需要读写外部存储文件的活动中写。
={String[]权限 “android.permission.READ_EXTERNAL_STORAGE”, “android.permission。WRITE_EXTERNAL_STORAGE "};//检测是否有写的权限=ContextCompat.checkSelfPermission (int许可, “android.permission.WRITE_EXTERNAL_STORAGE”); 如果(许可!=PackageManager.PERMISSION_GRANTED) {//没有写的权限,去申请写的权限,会弹出对话框 ActivityCompat。requestPermissions(权限,1); } 保存文件的方法: 公共空间SaveBitmapFromView(查看视图){ int w=view.getWidth (); int h=view.getHeight (); 位图bmp位图。createBitmap (w h Bitmap.Config.ARGB_8888); 帆布c=新画布(bmp); 视图。布局(0,0 w h); view.draw (c);//缩小图片 矩阵矩阵=new矩阵(); matrix.postScale (0.5, 0.5);//长和宽放大缩小的比例 bmp位图。createBitmap (bmp, 0, 0, bmp.getWidth (), bmp.getHeight(),矩阵,true); DateFormat格式=new SimpleDateFormat (“yyyyMMddHHmmss”); saveBitmap (bmp格式。新日期格式(())+“jpeg”); }/* *保存文件,文件名为当前日期 */公共空间saveBitmap(位图的位图,字符串bitName) { 字符串文件名; 文件文件; 如果构建。品牌.equals(“小米”)){//小米手机 文件名=Environment.getExternalStorageDirectory () .getPath () +“/DCIM/相机/? bitName; 其他}{//魅族,朋友 文件名=Environment.getExternalStorageDirectory () .getPath () +“DCIM/? bitName; }=新文件(文件名); 如果(file.exists ()) { file.delete (); } FileOutputStream; 尝试{=新FileOutputStream(文件);//格式为JPEG,照相机拍出的图片为JPEG格式的,PNG格式的不能显示在相册中 如果(bitmap.compress (Bitmap.CompressFormat.JPEG, 90)) { out.flush (); out.close ();//插入图库 file.getAbsolutePath MediaStore.Images.Media.insertImage (this.getContentResolver () (), bitName, null); } } 抓住(FileNotFoundException e) { e.printStackTrace (); } 抓住(IOException e) { e.printStackTrace (); }//发送广播,通知刷新图库的显示 这一点。sendBroadcast(新意图(意图。ACTION_MEDIA_SCANNER_SCAN_FILE, Uri。解析(“文件://?文件名))); } >之前以上就是保存图片到相册的方式,代码写在类活动中,而我们只要稍微封装一下这些代码到你的ImageUtil或者FileUtil那样类里的面,你就可以方便地运用到你的项目中了,这里我就不封装了。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》,《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》,《Android视图视图技巧总结》,《Android布局布局技巧总结》及《安卓控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
Android开发实现保存图片到手机相册功能