2017-07-31 53 views
0

我是一個關於Android編程新手如何將影像保存在指定文件夾的Android

我想從我的應用程序創建存儲圖像的文件夾,當用戶點擊保存

我可以將圖片保存到我的設備

但我不知道創建特定的文件夾,如何創建文件夾?

感謝您的幫助!

對不起,我的英語不好。

我的代碼

CapturePhotoUtils.insertImage(context.getContentResolver(), myBitmap, title ,des); 

和CapturePhotoUtils.java

public class CapturePhotoUtils { 


    public static final String insertImage(ContentResolver cr, 
              Bitmap source, 
              String title, 
              String description) { 

     ContentValues values = new ContentValues(); 
     values.put(Images.Media.TITLE, title); 
     values.put(Images.Media.DISPLAY_NAME, title); 
     values.put(Images.Media.DESCRIPTION, description); 
     values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
     // Add the date meta data to ensure the image is added at the front of the gallery 
     values.put(Images.Media.DATE_ADDED, System.currentTimeMillis()); 
     values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis()); 

     Uri url = null; 
     String stringUrl = null; /* value to be returned */ 

     try { 
      url = cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

      if (source != null) { 
       OutputStream imageOut = cr.openOutputStream(url); 
       try { 
        source.compress(Bitmap.CompressFormat.JPEG, 50, imageOut); 
       } finally { 
        imageOut.close(); 
       } 

       long id = ContentUris.parseId(url); 
       // Wait until MINI_KIND thumbnail is generated. 
       Bitmap miniThumb = Images.Thumbnails.getThumbnail(cr, id, Images.Thumbnails.MINI_KIND, null); 
       // This is for backward compatibility. 
       storeThumbnail(cr, miniThumb, id, 50F, 50F,Images.Thumbnails.MICRO_KIND); 
      } else { 
       cr.delete(url, null, null); 
       url = null; 
      } 
     } catch (Exception e) { 
      if (url != null) { 
       cr.delete(url, null, null); 
       url = null; 
      } 
     } 

     if (url != null) { 
      stringUrl = url.toString(); 
     } 

     return stringUrl; 
    } 

    private static final Bitmap storeThumbnail(
      ContentResolver cr, 
      Bitmap source, 
      long id, 
      float width, 
      float height, 
      int kind) { 

     // create the matrix to scale it 
     Matrix matrix = new Matrix(); 

     float scaleX = width/source.getWidth(); 
     float scaleY = height/source.getHeight(); 

     matrix.setScale(scaleX, scaleY); 

     Bitmap thumb = Bitmap.createBitmap(source, 0, 0, 
       source.getWidth(), 
       source.getHeight(), matrix, 
       true 
     ); 

     ContentValues values = new ContentValues(4); 
     values.put(Images.Thumbnails.KIND,kind); 
     values.put(Images.Thumbnails.IMAGE_ID,(int)id); 
     values.put(Images.Thumbnails.HEIGHT,thumb.getHeight()); 
     values.put(Images.Thumbnails.WIDTH,thumb.getWidth()); 

     Uri url = cr.insert(Images.Thumbnails.EXTERNAL_CONTENT_URI, values); 

     try { 
      OutputStream thumbOut = cr.openOutputStream(url); 
      thumb.compress(Bitmap.CompressFormat.JPEG, 100, thumbOut); 
      thumbOut.close(); 
      return thumb; 
     } catch (FileNotFoundException ex) { 
      return null; 
     } catch (IOException ex) { 
      return null; 
     } 
    } 
+0

你可以試試這個[](https://stackoverflow.com/a/11846172/900128) –

+0

也許這可以幫助你,它展示如何創建一個文件夾:[https://stackoverflow.com/a/17795025/4845438](https://stackoverflow.com/a/17795025/4845438) –

回答

2

試試這個

addToFav("/Favorite", "add to favoriote"); 

創建此功能

public void addToFav(String dirName, String str) { 

    String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date()); 
    String fileName = "fav" + timeStamp + ".JPG"; 


    File direct = new File(Environment.getExternalStorageDirectory() + dirName); 

    if (!direct.exists()) { 
     File wallpaperDirectory = new File(Environment.getExternalStorageDirectory() + dirName); 
     wallpaperDirectory.mkdirs(); 
    } 

    File file = new File(new File(Environment.getExternalStorageDirectory() + dirName), fileName); 
    if (file.exists()) { 
     file.delete(); 
    } 
    try { 
     FileOutputStream out = new FileOutputStream(file); 

     Bitmap bitmap = BitmapFactory.decodeFile(imagesPathArrayList.get(pos)); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 20, out); 
     out.flush(); 
     out.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    ContentValues values = new ContentValues(); 
    values.put(Images.Media.TITLE, "title"); 
    values.put(Images.Media.DESCRIPTION, "description"); 
    values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis()); 
    values.put(Images.ImageColumns.BUCKET_ID, file.toString().toLowerCase(Locale.US).hashCode()); 
    values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, file.getName().toLowerCase(Locale.US)); 
    values.put("_data", file.getAbsolutePath()); 
    ContentResolver cr = getContentResolver(); 
    cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

    } 

,不要忘記在manifest文件添加權限

+0

添加CapturePhotoUtils? –

+0

你可以調用這個功能,當你必須保存你的圖像 –

+0

對不起,這不是工作 –

相關問題