How to upload image as image from gallery?

I have an activity that has a button. When I click on the button, it redirects me to the image gallery. I want to show the selected image in the next step using the image view. But it does not display the image. When the image is set, the image is turned off.

Below is my code for selecting an image and moving on to the next. I do not use any story in my actions.

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close(); if (!(picturePath.equals(""))) { Intent intent = new Intent(); intent.setClass(MainActivity.this, ImageInGellary.class); intent.putExtra("picturePath", picturePath); startActivity(intent); } } } public class ImageInGellary extends Activity { Button cancel; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.load_image); cancel = (Button) findViewById(R.id.buttonCancelPicture); Intent in = getIntent(); savedInstanceState = in.getExtras(); String picturePath = savedInstanceState.getString("picturePath"); ImageView imageView = (ImageView) findViewById(R.id.img_view); imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); cancel.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* * Intent i = new Intent(Intent.ACTION_PICK, * android.provider.MediaStore * .Images.Media.EXTERNAL_CONTENT_URI); * * startActivityForResult(i, RESULT_LOAD_IMAGE); */ Intent intent = new Intent(); intent.setClass(ImageInGellary.this, MainActivity.class); startActivity(intent); } }); } } 
+6
source share
5 answers
  public class ImageGalleryDemoActivity extends Activity { private static int RESULT_LOAD_IMAGE = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture); buttonLoadImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close(); ImageView imageView = (ImageView) findViewById(R.id.imgView); imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); } } } 
+18
source

If you want to achieve this in 1 line, you only need:

 Picasso.with(MainActivity.this).load(data.getData()).noPlaceholder().centerCrop().fit().into((ImageView) findViewById(R.id.imageView1)); 

Complete solution:

Choose image

 public void pickImage() { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE); } 

Upload image

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { //Get ImageURi and load with help of picasso //Uri selectedImageURI = data.getData(); Picasso.with(MainActivity1.this).load(data.getData()).noPlaceholder().centerCrop().fit() .into((ImageView) findViewById(R.id.imageView1)); } } } 

In your situation, you need to pass ImageURI to the next operation

 Uri selectedImageURI = data.getData(); 
+8
source
 public void onClick(View view) { Intent gallery = new Intent(Intent.ACTION_GET_CONTENT); gallery.setType("image/*"); startActivityForResult(gallery, RESULT_LOAD_IMAGE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK){ Uri imageUri = data.getData(); imgView.setImageURI(imageUri); } } 
+5
source

If nothing works, the following code will work:

 import java.io.FileDescriptor; import java.io.IOException; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.provider.MediaStore; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class ImageGalleryDemoActivity extends Activity { private static int RESULT_LOAD_IMAGE = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture); buttonLoadImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close(); ImageView imageView = (ImageView) findViewById(R.id.imgView); Bitmap bmp = null; try { bmp = getBitmapFromUri(selectedImage); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } imageView.setImageBitmap(bmp); } } private Bitmap getBitmapFromUri(Uri uri) throws IOException { ParcelFileDescriptor parcelFileDescriptor = getContentResolver().openFileDescriptor(uri, "r"); FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor); parcelFileDescriptor.close(); return image; } } 
+2
source

I solved your problem. After the image is selected, convert the Uri image to String and the second class, convert the string back to the image.

http://whats-online.info/science-and-tutorials/95/Android-get-image-from-gallery-into-imageview-programmatically/

http://whats-online.info/science-and-tutorials/49/Android-passing-multiple-data-from-one-activity-to-another/

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { case SELECT_PHOTO: if(resultCode == RESULT_OK){ Uri selectedImage = data.getData(); if(selectedImage !=null){ Intent intent=new Intent(MainActivity.this, Activity2.class); Bundle extras = new Bundle(); extras.putString("image", selectedImage.toString()); intent.putExtras(extras); startActivity(intent); } } } 

Activity2.class

  Bundle extras = getIntent().getExtras(); String name = extras.getString("image"); Uri imageFinal=Uri.parse(name); 
+1
source

All Articles