如何在特定文件夹android中保存图像

时间:2017-07-31 08:31:37

标签: java android image mediastore

我是关于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;
        }
    }

1 个答案:

答案 0 :(得分:3)

试试这个

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);

  }

并且不要忘记在清单文件中添加权限