将图像放入 Bundle
Putting an image to a Bundle
如何将相机拍摄的图像保存在一个包中并将其移动到第二个 activity?
我哪里做错了?
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);
}
}
}
有几种方法可以将位图传递给第二个 Activity
您可以通过 Bundle
表格 Intent
。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAM_REQUEST) {
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras()
Intent i = new Intent(this, PostActivity.class);
i.putExtra("extras", extras);
startActivity(i);
}
}
}
并且在 PostActivity
中你可以调用
Bundle extras = getIntent().getBundleExtra("extras")
Bitmap thumbnail = (Bitmap) extras.get("data");
或者,如果您只想传递图像,则必须将位图转换为字节数组
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAM_REQUEST) {
if (resultCode == RESULT_OK) {
Intent intent = new Intent(this, PostActivity.class);
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
intent.putExtra("image",byteArray);
startActivity(i);
}
}
}
或者你的方法应该也没错。您必须通过 getParcelableExtra(String)
方法获得 Bitmap
。
Bitmap thumbnail = getIntent().getParcelableExtra("data");
Bitmap 实现了 Parcelable,所以你应该使用:
Bitmap thumbnail = (Bitmap) data.getParcelableExtra("data");
如何将相机拍摄的图像保存在一个包中并将其移动到第二个 activity? 我哪里做错了?
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);
}
}
}
有几种方法可以将位图传递给第二个 Activity
您可以通过 Bundle
表格 Intent
。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAM_REQUEST) {
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras()
Intent i = new Intent(this, PostActivity.class);
i.putExtra("extras", extras);
startActivity(i);
}
}
}
并且在 PostActivity
中你可以调用
Bundle extras = getIntent().getBundleExtra("extras")
Bitmap thumbnail = (Bitmap) extras.get("data");
或者,如果您只想传递图像,则必须将位图转换为字节数组
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAM_REQUEST) {
if (resultCode == RESULT_OK) {
Intent intent = new Intent(this, PostActivity.class);
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
intent.putExtra("image",byteArray);
startActivity(i);
}
}
}
或者你的方法应该也没错。您必须通过 getParcelableExtra(String)
方法获得 Bitmap
。
Bitmap thumbnail = getIntent().getParcelableExtra("data");
Bitmap 实现了 Parcelable,所以你应该使用:
Bitmap thumbnail = (Bitmap) data.getParcelableExtra("data");