Android 图像存储在SD卡ContentResolver

    技术2022-05-19  25

    Android 图像存储在SDContentResolver

    20100806 下午 03:27

    关于Android 拍照程序保存图片问题,用程序拍摄到图片以后,直接保存在SD卡里,但是无法在相册中预览和查看,必须使用以下方式,才能把图片加载到系统相册中。1.把图片放到SD卡的相机默认保存目录中:

    1.      public class ImageManager {  

    2.          public static Uri addImageAsCamera(ContentResolver cr, Bitmap bitmap) {  

    3.              long dateTaken = System.currentTimeMillis();  

    4.               String name = createName(dateTaken) + ".jpg";  

    5.               String uriStr = MediaStore.Images.Media.insertImage(cr, bitmap, name,  

    6.                      null);  

    7.              return Uri.parse(uriStr);  

    8.           }  

    9.        

    10.      private static String createName(long dateTaken) {  

    11.          return DateFormat.format("yyyy-MM-dd_kk.mm.ss", dateTaken).toString();  

    12.       }  

    13.  }  

    2.指定文件卡,放入图片,并能够预览。

    1.      private static final String TAG = "ImageManager";  

    2.      private static final String APPLICATION_NAME = "PATOM";  

    3.      private static final Uri IMAGE_URI = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;  

    4.      private static final String PATH = Environment.getExternalStorageDirectory().toString() + "/" + APPLICATION_NAME;  

    5.        

    6.      public static Uri addImageAsApplication(ContentResolver cr, Bitmap bitmap) {  

    7.          long dateTaken = System.currentTimeMillis();  

    8.           String name = createName(dateTaken) + ".jpg";  

    9.          return addImageAsApplication(cr, name, dateTaken, PATH, name, bitmap, null);  

    10.  }  

    11.    

    12.  public static Uri addImageAsApplication(ContentResolver cr, String name,  

    13.          long dateTaken, String directory,  

    14.           String filename, Bitmap source, byte[] jpegData) {  

    15.    

    16.       OutputStream outputStream = null;  

    17.       String filePath = directory + "/" + filename;  

    18.      try {  

    19.           File dir = new File(directory);  

    20.          if (!dir.exists()) {  

    21.               dir.mkdirs();  

    22.               Log.d(TAG, dir.toString() + " create");  

    23.           }  

    24.           File file = new File(directory, filename);  

    25.          if (file.createNewFile()) {  

    26.               outputStream = new FileOutputStream(file);  

    27.              if (source != null) {  

    28.                   source.compress(CompressFormat.JPEG, 75, outputStream);  

    29.               } else {  

    30.                   outputStream.write(jpegData);  

    31.               }  

    32.           }  

    33.    

    34.       } catch (FileNotFoundException ex) {  

    35.           Log.w(TAG, ex);  

    36.          return null;  

    37.       } catch (IOException ex) {  

    38.           Log.w(TAG, ex);  

    39.          return null;  

    40.       } finally {  

    41.          if (outputStream != null) {  

    42.              try {  

    43.                   outputStream.close();  

    44.               } catch (Throwable t) {  

    45.               }  

    46.           }  

    47.       }  

    48.        

    49.       ContentValues values = new ContentValues(7);  

    50.       values.put(Images.Media.TITLE, name);  

    51.       values.put(Images.Media.DISPLAY_NAME, filename);  

    52.       values.put(Images.Media.DATE_TAKEN, dateTaken);  

    53.       values.put(Images.Media.MIME_TYPE, "image/jpeg");  

    54.       values.put(Images.Media.DATA, filePath);  

    55.      return cr.insert(IMAGE_URI, values);  

    56.  }  

     


    最新回复(0)