2017-07-31 54 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

对不起,这不是工作 –

相关问题