sending image to another activity - android

I am trying to send an image that in ListView from onItemClick to onCreate method in another activity .
This is my code :
Activity 1
product_imageView= findViewById(R.id.product_imageView);
byte[] image = savedInstanceState.getByteArray("Product image");
Bitmap receivedImage = BitmapFactory.decodeByteArray(image,0,image.length);
//here it give me error
product_imageView.setImageResource(receivedImage);
Activity 1
String productimage = productslist.get(position).getProductImage();
Bundle bundle = new Bundle();
bundle.putByteArray("Product image", productimage.getBytes());
intent.putExtras(bundle);
startActivity(intent);

Please try this
First convert imageview to bitmap.
product_imageView.buildDrawingCache();
Bitmap bitmap = product_imageView.getDrawingCache();
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("BitmapImage", bitmap);
In second Activity please include this line:
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
imageview.setImageBitmap(bitmap);

Why are you sending images between activities?, why not just place your image in drawable folder and pass the name or path of the image to the next activity and then display or do whatever you want to do with it.

You do it like this
put your image in drawable folder for example image1.png.
then all you do is parse a string with the name for the image to the second activity example:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("image", "image1.png");
startActivity(intent);
On the second activity you display for instance:
Intent intent = getIntent();
String imageStr = intent.getStringExtra("image");
ImageView imageView = (ImageView)findViewById(R.id.myimage);
imageView.setImageResource(R.drawable.image1);
I hope code is correct, forgive my mistakes I wrote this in a hurry.

Related

can't pass bitmap through intent

I am not able to pass image to another activity as bitmap
Main activity
Intent intent=new Intent(LastActivityGrid.this,ActivityMetadata.class);
byte[] image = Utils.getImageBytes(gridlist.get(position).getBitmap());
intent.putExtra("image",image);
startActivity(intent);
second activity
byte[] byteArray = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
Bitmap implements Parcelable, so you could always pass it with the intent:
Intent intent=new Intent(LastActivityGrid.this,ActivityMetadata.class);
Bitmap image = gridlist.get(position).getBitmap();
intent.putExtra("image",image);
startActivity(intent);
and retrieve it on the other end:
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("image");
If Image is not too bit then It will work.
But proper solution is to pass the actual location of the image and get the Image from there in the second activity. But As I understand you prefer quick solution.
I hope it will help!

Intent getStringExtra returning null

I know this question has been asked a lot, but I have no idea where I went wrong..
So I sent some data through one activity and retrieving it from the other activity.
FirstActivity
Timber.i("Photo img : %s", posterUrl);
String url = AppConstants.IMAGE_BASE_URL+
AppConstants.POSTER_SIZE_ORIGINAL+ posterUrl;
Intent i = new Intent(this, ImageFullActivity.class);
i.putExtra(AppConstants.IMAGE_URL, url);
startActivity(i);
Recieving Activity
Intent i = new Intent();
String imageUrl = i.getStringExtra(AppConstants.IMAGE_URL);
Timber.i("GOt image url %s", imageUrl);
Picasso.with(this)
.load(imageUrl)
.into(image);
And I checked. I am not passing null through the extras. The posterUrl is a valid string.
You need to use getIntent() to get the intent instance that started the next activity as
getIntent().getStringExtra
instead of creating a new empty one
//Intent i = new Intent(); remove
Intent i = getIntent(); // or do this
Try this
//Intent i = new Intent();
String imageUrl = getIntent().getStringExtra(AppConstants.IMAGE_URL);
Timber.i("GOt image url %s", imageUrl);
Picasso.with(this)
.load(imageUrl)
.into(image);
OR
Bundle bundle = getIntent().getExtras();
String imageUrl = bundle.getString(AppConstants.IMAGE_URL);
Timber.i("GOt image url %s", imageUrl);
Picasso.with(this)
.load(imageUrl)
.into(image);
String imageUrl = getIntent().getStringExtra(AppConstants.IMAGE_URL);
You need to get the intent by getIntent() method
Problem is that you are trying to create new intent in your receiving activity which does not have your data what you passed in other activity.
To get the intent what you passed in other activity use getIntent().
Intent i = getIntent();
Here this intent will be holding your data you passed from other activity.

How to pass image from one page to another where image is fetched from url

I need to pass image fetched from url into another activity page. I'm able to do so foe textviews. But i got stuck how to pass image from one page to another in android. dynamically through url.
can anyone give some suggestions regarding this.
1.First Way
Bitmap implements Parcelable
For Sent
Intent intent = new Intent(this, BActivity.class);
intent.putExtra("image", bitmap);
and Retrieve :
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("image");
2.Second Way
//Convert to byte array for sent
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Intent in1 = new Intent(this, Activity2.class);
in1.putExtra("image",byteArray);
Then Retrieve in another activity:
byte[] byteArray = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
By using intent you can pass image url. from there you have to display that. You can not pass Image.
send data using intent
Intent openNewActivity = new Intent(getApplicationContext(), Activity2.class);
openNewActivity.putExtra("image", "www.fb.com/profilepic.png");
startActivity(openNewActivity);
get data from your Activity2.class file
write this code in your onCreate method
Bundle extras = getIntent().getExtras();
String image;
if (extras != null) {
image = extras.getString("image");
// and get whatever type user account id is
}
now set image url on Image.

Moving the picture captured to the next activity

Am trying to put the picture captured by the user in the second activity. Every time I capture the picture it takes me to the nextActivity but the problem am facing now is how to put the image captured inside the next activity so the user can see it
Please any one can guide me or direct me on how should i do it?
This is my code
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAM_REQUEST) {
if (resultCode == RESULT_OK) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
Intent i = new Intent(this, PostActivity.class);
i.putExtra("name", thumbnail);
startActivity(i);
}
}
}
You can use following code to send data through Intent
Intent intent=new Intent(CurrentActivity.this,SecondActivity.class);
intent.putExtra("imagepath",path);
startActivity(intent);
Code To Receive Data that sent through Intent in SecondActivity
Bundle b=getIntent().getExtras();
String path=b.getString("imagepath");
Add an image path to intent extras and get it in the second activity.
Send Image URI using Intent Extras in between Activities.
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("uri",uri);
startActivity(i);
As you Receive Bitmap on onActivityResult method. so you can try with following code to pass image to theNextActivity.
1) Convert Bitmap to Byte Array
Bitmap mBitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
// Pass it to intent to send in NextActitivy
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("captured_image", byteArray);
startActivity(intent);
2) Get byte from bundle on NextActivity at onCreate() method
Bundle mBundle = getIntent().getExtras();
byte[] mBytes = mBundle.getByteArray("captured_image");
Bitmap mBitmap = BitmapFactory.decodeByteArray(mBytes, 0, mBytes.length);
ImageView mImageView = (ImageView) findViewById(R.id.imageView1);
mImageView.setImageBitmap(mBitmap);

How to recive Image file with Intents?

am sending an image with help of intent as follow
Uri profileImage = Uri.parse("android.resource://Tset/res/drawable-hdpi/arr.jpeg");
details.setType("image/png");
details.putExtra(Intent.EXTRA_STREAM, profileImage);
startActivity(details);
how do i can get the image path in my receiving end activity ?
Try This
Pass image url from current activity using intent
Intent myIntent = new Intent(this, MyImageViewActivity.class);
Bundle bundle = new Bundle();
bundle.putString("image", path);
myIntent.putExtras(bundle);
startActivityForResult(myIntent, 0);
Here path is
String path="android.resource://Tset/res/drawable-hdpi/arr.jpeg"
in your receiving activity
Bundle bundle = this.getIntent().getExtras();
String path = bundle.getString("image");
Finally i done it with help of id of the image as follow ! !
thanks for all of ur reply ! !
profilePictureID=R.drawable.image name;//name of image in drawable folder dont use extensions like.jpg and all
IntentObject.putExtra("ImageID",profilePictureID);
startActivity(IntenetObject);
In receiving activity
int pictureId=getIntent().getIntExtra("ImageID",0);
profilePicture.setImageResource(pictureId);
Try this..
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "image/png");
startActivity(intent);

Categories

Resources