2016-01-08 3 views
1

Я хочу показать изображение пользователя в своем приложении, поэтому я взял изображение в навигационном ящике.Как сохранить изображение галереи Android?

Сначала я получаю изображение из галереи и задаю это изображение для просмотра изображений. Но всякий раз, когда я закрываю приложение и открываю изображение, он не отображается (что я выбрал из галереи). Поэтому я хочу сохранить изображение во внутренней памяти.

Я пробовал, но изображение не отображается.

Пожалуйста, помогите мне.

Заранее спасибо.

Мой код:

rightimage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

    //gallery 
        Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        startActivityForResult(i, RESULT_LOAD_IMAGE); 

       } 
      }); 

    @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      if (requestCode == RESULT_LOAD_IMAGE && null != data) { 
       Uri selectedImage = data.getData(); 
       String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
       Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
       cursor.moveToFirst(); 
       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       String picturePath = cursor.getString(columnIndex); 
       cursor.close(); 

       rightimage.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
    //saving image in internal storage. 
       saveImageToInternalStorage(BitmapFactory.decodeFile(picturePath)); 
      } 
     } 
    // //saving image in internal storage. 

     public boolean saveImageToInternalStorage(Bitmap image) { 

      try { 
    // Use the compress method on the Bitmap object to write image to 
    // the OutputStream 
       fos = getActivity().openFileOutput(file, Context.MODE_PRIVATE); 

    // Writing the bitmap to the output stream 
       image.compress(Bitmap.CompressFormat.PNG, 100, fos); 
       fos.close(); 

       return true; 
      } catch (Exception e) { 
       Log.e("saveToInternalStorage()", e.getMessage()); 
       return false; 
      } 
     } 


     public Bitmap getThumbnail(String filename) { 


      Bitmap thumbnail = null; 



    // If no file on external storage, look in internal storage 

       try { 
        Log.v("RTAG_IMAG",""+"IMG"); 
        File filePath = getActivity().getFileStreamPath(filename); 
        FileInputStream fi = new FileInputStream(filePath); 
        thumbnail = BitmapFactory.decodeStream(fi); 
        rightimage.setImageBitmap(thumbnail); 
       } catch (Exception ex) { 
        Log.e("getThumbnail()", ex.getMessage()); 
       } 

      return thumbnail; 

     } 
+0

ли вы опубликовать ваши журналы LogCat для этого. – AndRSoid

ответ

0
  1. Поддерживайте флаг для использования user_image sharedPref.
  2. Если установлен, то установите user_image из сохраненного файла в ImageView
  3. Else загрузить некоторые настройки по умолчанию profile_image
0

попробовать на этом пути.

private String saveToInternalSorage(Bitmap bitmapImage){ 
    ContextWrapper cw = new ContextWrapper(getApplicationContext()); 
    // path to /data/data/yourapp/app_data/imageDir 
    File directory = cw.getDir("imageDir", Context.MODE_PRIVATE); 
    // Create imageDir 
    File mypath=new File(directory,"profile.jpg"); 

    FileOutputStream fos = null; 
    try {   
     fos = new FileOutputStream(mypath); 
    // Use the compress method on the BitMap object to write image to the OutputStream 
     bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } finally { 
      fos.close(); 
    } 
    return directory.getAbsolutePath(); 
} 

} 1. Справочник будет создан с заданным именем. Javadocs предназначен для указания, где именно он создаст каталог.

2.Вы должны будете указать имя изображения, с помощью которого вы хотите его сохранить.

и загрузите изображение, подобное этому способу.

private void loadImageFromStorage(String path) 

{

try { 
    File f=new File(path, "profile.jpg"); 
    Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f)); 
     ImageView img=(ImageView)findViewById(R.id.imgPicker); 
    img.setImageBitmap(b); 
} 
catch (FileNotFoundException e) 
{ 
    e.printStackTrace(); 
} 
+0

Какой путь мне нужно дать для loadImageFromStorage –

+0

@kartheekij Прочитать комментарий в файле saveToInternalSorage(). Путь предназначен для внутреннего хранилища, который вы можете сохранить при сохранении. См. Метод возвращает directory.getAbsolutePath(). Его путь к каталогу, в котором сохранен файл –