0

画像をキャプチャするプログラムを作成しました。これは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();
            }
4

3 に答える 3

3

以下のコードを参照してください

    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();
        }
       }
      }
于 2012-07-13T11:09:42.113 に答える
1

ファイルに間違ったファイル名を設定しています。画像ファイルの名前に時間を使用したい場合は、この方法を使用してください。

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();
}
于 2012-07-13T11:36:54.593 に答える
0

彼女はあなたがする必要があることです:代わりに

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"/>
于 2012-07-13T11:54:43.637 に答える