Создайте новый файл изображения из чертежного

#android

#Android

Вопрос:

У меня проблема. Я выбираю изображение из галереи в Android и показываю его в imageview. Что я хочу сделать, это создать другой файл с другим именем и скопировать это изображение в этот файл внутри каталога в моих ресурсах приложений. Кто-нибудь может мне помочь, пожалуйста.

Ответ №1:

Вы можете запустить средство выбора галереи следующим образом:

 public void imageFromGallery() {
Intent getImageFromGalleryIntent = 
  new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(getImageFromGalleryIntent, SELECT_IMAGE);
}
  

Затем, когда он вернется, получите путь к выбранному изображению со следующей частью кода:

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (resultCode == RESULT_OK) {
    switch(requestCode) {
    case SELECT_IMAGE:
        mSelectedImagePath = getPath(data.getData());
        break;
  }
}

public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
  

Теперь, когда у вас есть путь в строке, вы можете скопировать его в другое место.

 try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
    String sourceImagePath= "/path/to/source/file.jpg";
    String destinationImagePath= "/path/to/destination/file.jpg";
    File source= new File(data, souceImagePath);
    File destination= new File(sd, destinationImagePath);
    if (source.exists()) {
        FileChannel src = new FileInputStream(source).getChannel();
        FileChannel dst = new FileOutputStream(destination).getChannel();
        dst.transferFrom(src, 0, src.size());
        src.close();
        dst.close();
    }
} catch (Exception e) {}
  

Я думаю, это сделает вашу работу..

Также перейдите по этой ссылке