2013-11-22 3 views
0

я следующий код:Как сохранить изображение для дальнейшего использования после пользователь выбирает изображение из списка

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button camera = (Button) findViewById(R.id.bt_camera); 

     camera.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) {     
       Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
       intent.setType("image/*"); 
       startActivityForResult(intent, 0); 
      } 
     });   
    } 
} 

код подсказывает пользователю выбрать и изображение с телефона. Теперь я хочу сохранить это изображение, чтобы мое приложение могло обрезать изображение. Как сохранить изображение, выбранное пользователем?

ответ

0
private File file = null; 
private String savedPath = null; 
private Bitmap bm; 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == getActivity().RESULT_OK) { 

    if (requestCode == 0) { // Recommend to use static int to check 
      Uri selectedImageUri = data.getData(); 

      String tempPath = getPath(selectedImageUri, getActivity()); // get the image path 

      BitmapFactory.Options btmapOptions = new BitmapFactory.Options(); 
      bm = BitmapFactory.decodeFile(tempPath, btmapOptions); // Now you can use this bitmap 

      savedPath = getPath(selectedImageUri, getActivity()); 
      file = new File(savedPath); 
      Log.i("File Name: ", file.getAbsolutePath() + " - " + file.getName()); 

      imageView.setImageBitmap(bm); // If you want to show in image view 
      imageView.setVisibility(View.VISIBLE); 
     } 

    } 
} 

    public String getPath(Uri uri, Activity activity) { 
     String[] projection = { MediaColumns.DATA }; 
     Cursor cursor = activity.managedQuery(uri, projection, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
} 
0

Вот метод я использую для хранения изображения в SDCARD

public void saveImageToSDCard(byte[] imageDataArray) { 

     File sdDir = Environment 
        .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 

     File pictureFileDir = new File(sdDir, "CameraAPIDemo"); 

     if (!pictureFileDir.exists() && !pictureFileDir.mkdirs()) { 

      Log.d("saveImageToSDCard", "Can't create directory to save image."); 

      return; 

     } 

     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss"); 
     String date = dateFormat.format(new Date()); 
     String photoFile = "Picture_" + date + ".jpg"; 

     String imageFileName = pictureFileDir.getPath() + File.separator + photoFile; 

     File pictureFile = new File(imageFileName); 

     try { 
      FileOutputStream fos = new FileOutputStream(pictureFile); 
      fos.write(imageDataArray); 
      fos.close(); 
      Toast.makeText(context, "New Image saved:" + photoFile, 
       Toast.LENGTH_LONG).show(); 
     } catch (Exception error) { 
      Log.d("saveImageToSDCard", "File" + imageFileName + "not saved: " 
       + error.getMessage()); 
      Toast.makeText(context, "Image could not be saved.", 
       Toast.LENGTH_LONG).show(); 
     } 
    } 
Смежные вопросы