今天介绍一下在Android中怎么插入图片到媒体库,下面看代码:
1 final String titleName = Function.md5(imageUri.toLowerCase()) 2 + ".png"; 3 OutputStream fOut = null; 4 try { 5 File file = new File(MainApp.cacheDir, titleName); 6 if (!file.exists()) { 7 fOut = new FileOutputStream(file); 8 9 loadedImage.compress(Bitmap.CompressFormat.JPEG, 100, 10 fOut); 11 fOut.flush(); 12 fOut.close(); 13 MediaStore.Images.Media.insertImage( 14 getContentResolver(), file.getAbsolutePath(), 15 file.getName(), file.getName()); 16 Toast.makeText(GalleryActivity.this, "保存成功!", 17 Toast.LENGTH_SHORT).show(); 18 } else { 19 Toast.makeText(GalleryActivity.this, "已经保存!", 20 Toast.LENGTH_SHORT).show(); 21 } 22 } catch (FileNotFoundException e) { 23 e.printStackTrace(); 24 } catch (IOException e) { 25 e.printStackTrace(); 26 }
上面代码的功能是创建一个文件夹保存图片并且把图片插入到媒体库里。在看一种方式:
1 final String titleName = Function.md5(imageUri.toLowerCase()) 2 + ".png"; 3 ContentValues values = new ContentValues(); 4 values.put(Media.DISPLAY_NAME, titleName); 5 values.put(Media.DESCRIPTION, titleName); 6 values.put(Media.MIME_TYPE, "image/jpeg"); 7 Uri uri = getContentResolver().insert( 8 Media.EXTERNAL_CONTENT_URI, values); 9 10 OutputStream fOut = null; 11 try { 12 fOut = getContentResolver().openOutputStream(uri); 13 loadedImage.compress(Bitmap.CompressFormat.JPEG, 100, fOut); 14 fOut.flush(); 15 fOut.close(); 16 Toast.makeText(GalleryActivity.this, "保存成功!", 17 Toast.LENGTH_SHORT).show(); 18 } catch (FileNotFoundException e) { 19 e.printStackTrace(); 20 } catch (IOException e) { 21 e.printStackTrace(); 22 }
这种方式就是直接把图片保存到媒体库里面,但是这种方式会重复保存图片。