美文网首页APP开发经验总结android 技术知识
android将应用中图片保存到系统相册并显示

android将应用中图片保存到系统相册并显示

作者: 追梦小乐 | 来源:发表于2018-10-10 23:09 被阅读4次

    转载于:https://www.cnblogs.com/Sharley/p/7942142.html

      private static File mPhotoFile = null;
        public static void setPhotoFile(File photoFile){
            mPhotoFile = photoFile;
        }
    
        public static File getPhotoFile(){
    
            return mPhotoFile;
        }
    
    
        /**
         * 保存图片到图库
         * @param bmp
         */
        public static void saveImageToGallery(Bitmap bmp,String bitName ) {
            // 首先保存图片
            File appDir = new File(Environment.getExternalStorageDirectory(),
                    "yingtan");
            if (!appDir.exists()) {
                appDir.mkdir();
            }
    
            String fileName = bitName + ".jpg";
            File file = new File(appDir, fileName);
    
            try {
                FileOutputStream fos = new FileOutputStream(file);
                bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                fos.flush();
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            setPhotoFile(file);
        }
    
        /**
         * @param bmp 获取的bitmap数据
         * @param picName 自定义的图片名
         */
        public static void saveBmp2Gallery(Context context,Bitmap bmp, String picName) {
            saveImageToGallery(bmp,picName);
            String fileName = null;
            //系统相册目录
            String galleryPath = Environment.getExternalStorageDirectory()
                    + File.separator + Environment.DIRECTORY_DCIM
                    + File.separator + "Camera" + File.separator;
    
    
            // 声明文件对象
            File file = null;
            // 声明输出流
            FileOutputStream outStream = null;
            try {
                // 如果有目标文件,直接获得文件对象,否则创建一个以filename为名称的文件
                file = new File(galleryPath, picName + ".jpg");
                // 获得文件相对路径
                fileName = file.toString();
                // 获得输出流,如果文件中有内容,追加内容
                outStream = new FileOutputStream(fileName);
                if (null != outStream) {
                    bmp.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
                }
            }catch (Exception e) {
                e.getStackTrace();
            } finally {
                try {
                    if (outStream != null) {
                        outStream.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            MediaStore.Images.Media.insertImage(context.getContentResolver(),bmp,fileName,null);
            Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            Uri uri = Uri.fromFile(file);
            intent.setData(uri);
            context.sendBroadcast(intent);
    
            ToastUtils.showToast(context,"图片保存成功");
    
        }
    

    相关文章

      网友评论

        本文标题:android将应用中图片保存到系统相册并显示

        本文链接:https://www.haomeiwen.com/subject/xbqvaftx.html