裁剪后,Android应用程序图像未保存在指定的Sd Card文件夹中,显示空文件夹

时间:2015-06-16 11:46:11

标签: android android-camera android-sdcard android-image

我在Android应用程序中使用相机拍摄图像。

然后裁剪图像。

在剪裁后将图像保存在指定的文件夹中。

文件夹正在创建,但图片未保存在文件夹中。(空为)

帮我解决一下

我用过的代码,

link referred

                    if (extras != null) {

                            Bitmap photooutput = extras.getParcelable("data");
                            // Camera Output

                            if (pick == 1) {

                                viewImage.setImageBitmap(photooutput);


                                String path = Environment.getExternalStorageDirectory().toString();
                                File m_imgDirectory = new File(path + "/WallPaper/");

                                if (!m_imgDirectory.exists()) m_imgDirectory.mkdir();

                                FileOutputStream m_fOut = null;
                                File directory2 = new File(path);
                                directory2.delete();
                                String m_fileid = System.currentTimeMillis() + "";
                                directory2 = new File(path, "/Wall/" + m_fileid + ".png");  


                                try
                                {
                                    if (!directory2.exists()) directory2.createNewFile();
                                    m_fOut = new FileOutputStream(directory2);      
                                    Bitmap m_bitmap = photooutput.copy(Bitmap.Config.ARGB_8888, true);
                                    m_bitmap.compress(Bitmap.CompressFormat.PNG, 100, m_fOut);
                                    m_fOut.flush();
                                    m_fOut.close();
                                    MediaStore.Images.Media.insertImage(getContentResolver(),
     directory2.getAbsolutePath(), directory2.getName(), directory2.getName());
                                }
                                catch (Exception p_e)
                                {
                                }
                        }
}

1 个答案:

答案 0 :(得分:0)

使用Android KitKat及以上版本时,应用程序无法将文件保存到SD卡上。 请检查此Thread

<强>更新 将图像保存到内部存储:

public static Uri saveImage(Bitmap bmp) {
    Uri uri = null;
    try {
        String name = System.currentTimeMillis() + ".jpg";
        //you can create a new file name "test.jpg" in sdcard folder.
        File f = new File(getImagesDir() + File.separator + name);

        f.createNewFile();
        //write the bytes in file
        FileOutputStream fo = new FileOutputStream(f);
        fo.write(bitmapToByteArray(bmp));
        // remember close de FileOutput
        fo.close();

        uri = Uri.parse("file://" + f.getPath());
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return uri;
}

public static String getImagesDir() {
    String rootDir = Environment.getExternalStorageDirectory().toString();
    rootDir = rootDir + "/MyApp/Media/Images";

    // Create directory if not existed
    File dir = new File(rootDir);
    if (!dir.exists()) {
        dir.mkdir();
    }

    return dir.getPath();
}
public static byte[] bitmapToByteArray(Bitmap bmp) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte[] byteArray = stream.toByteArray();
    return byteArray;
}

更新2:缺少添加的代码

将以下权限添加到AndroidManifest:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>