簡體   English   中英

捕獲的圖像未存儲在android的特定文件夾中

[英]Captured image is not stored in the specific folder in android

我創建了一個捕獲圖像的程序,該程序被存儲到sdcard / dcim / camera文件夾中。 現在,我嘗試將捕獲的圖像保存在我自己在sdCard中創建的目錄中,說“ / somedir”。

I am able to make the directory programmatically but the image file is not getting stored in it.

Can anybody tell me where I am doing wrong here??

Here is the code....


File folder = new File(Environment.getExternalStorageDirectory() + "/abc");

Bitmap mybitmap1;     //mybitmap1 contain image. So plz dont consider that I don't have image in mybitmap1;
if(!folder.exists())
        {
            success = folder.mkdir();
            Log.i("Log", "folder created");
        }
        else
        {
            Log.i("Log", "Folder already present here!!");
        }
        String fname = date +".jpg";
        file = new File( folder,fname);
        if (file.exists ()) 
            file.delete (); 
        capturedImageUri = Uri.fromFile(file);

        FileOutputStream out;
            byte[] byteArray = stream.toByteArray();
            try {

                   out = new FileOutputStream(file);
                   mybitmap1.compress(Bitmap.CompressFormat.JPEG, 100, out);
                   out.flush();
                   out.close();
                   MediaStore.Images.Media.insertImage(getContentResolver(), mybitmap1, file.getName(), file.getName());
                   //MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName());


            } catch (Exception e) {
                   e.printStackTrace();
            }

請參考以下代碼

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK && requestCode == 1 ) {

    final Uri selectedImage = data.getData(); 

    try {
            bitmap = Media.getBitmap(getContentResolver(),selectedImage);
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

            File f = new File(Environment.getExternalStorageDirectory()
                    + File.separator
                    + filename);
            f.createNewFile();
            FileOutputStream fo = new FileOutputStream(f);
            fo.write(bytes.toByteArray());

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       }
      }

您為文件設置了錯誤的文件名。 如果要在圖像文件名中使用時間,請使用此方法。

private Uri getImageUri() {
    // Store image in dcim
    String currentDateTimeString = getDateTime();
    currentDateTimeString = removeChar(currentDateTimeString, '-');
    currentDateTimeString = removeChar(currentDateTimeString, '_');
    currentDateTimeString = removeChar(currentDateTimeString, ':');
    currentDateTimeString = currentDateTimeString.trim();
    File file = new File(Environment.getExternalStorageDirectory()
            + "/DCIM", currentDateTimeString + ".jpg");
    Uri imgUri = Uri.fromFile(file);

    return imgUri;
}


private final static String getDateTime() {
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd_hh:mm:ss");
    df.setTimeZone(TimeZone.getTimeZone("PST"));
    return df.format(new Date());
}

public static String removeChar(String s, char c) {
    StringBuffer r = new StringBuffer(s.length());
    r.setLength(s.length());
    int current = 0;
    for (int i = 0; i < s.length(); i++) {
        char cur = s.charAt(i);
        if (cur != c)
            r.setCharAt(current++, cur);
    }
    return r.toString();
}

她需要做的是:

File folder = new File(Environment.getExternalStorageDirectory() + "/abc");

做這個

File folder = new File(Environment.getExternalStorageDirectory().getPath() + "/abc");
if(folder.exists()){
  //save your file then
}
else{
  folder.mkdirs();
  //save your file then
}

確保在清單中使用必要的權限:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM