2014-11-10 4 views
0

Я создаю приложение для Android, которое обращается к камере, но я хочу сохранить изображение в определенной папке, но я не знаю, как это сделать. я использую построитель URI?Сохранение файла изображения в определенном каталоге

это код, который должен получить изображение с камеры.

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File photo = new File(Environment 
        .DIRECTORY_PICTURES), "pic.jpg"); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
    imageUri = Uri.fromFile(photo); 
    startActivityForResult(intent, TAKE_PICTURE); 

ответ

3

Вы можете создать файл из собственного каталога, как это:

private File openFileFromMyDirectory() { 

    File imageDirectory = null; 
    String storageState = Environment.getExternalStorageState(); 
    if (storageState.equals(Environment.MEDIA_MOUNTED)) { 
     imageDirectory = new File(
       Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "com.myapp.camera"); 
     if (!imageDirectory.exists() && !imageDirectory.mkdirs()) { 
      imageDirectory = null; 
     } else { 
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()); 

      return new File(imageDirectory.getPath() + 
        File.separator + "IMG_" + 
        dateFormat.format(new Date()) + ".jpg"); 
     } 
    } 
    return null; 
} 

Затем получить растровое из URI:

Bitmap mCameraBitmap= MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); 

Наконец сохранить растровое изображение в файл

private void saveImageToFile(File file) { 

    if (mCameraBitmap != null) { 
     FileOutputStream outStream = null; 
     try { 
      outStream = new FileOutputStream(file); 
      if (!mCameraBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream)) { 
       Toast.makeText(this, "Unable to save image to file.", 
         Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(this, "Saved image to: " + file.getPath(), 
         Toast.LENGTH_LONG).show(); 
      } 
      outStream.close(); 
     } catch (Exception e) { 
      Toast.makeText(this, "Unable to save image to file.", 
        Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
+0

Вы можете прояснить метод openFileFromMyDirectory() f или я? Я никогда не использовал переменную среды. я понимаю, что вы создаете объект «Файл» и проверяете, доступно ли хранилище. Такого рода вещи становятся туманными. создание образа imageDirectory несколько запутанно. строка в конце моего имени пакета? – StillLearningToCode

+0

также оператор возврата выглядит так, как будто он возвращает определенное изображение, а не просто создает файл создания. Извините за мое непонимание. – StillLearningToCode

Смежные вопросы