Android ||如何解析图像从一个活动到另一个?
这是我的代码。我想在这里添加一个按钮,点击将图像发送到下一个活动,但我无法配置它。我应该怎么做?Android ||如何解析图像从一个活动到另一个?
public class MainActivity extends Activity {
private static int RESULT_LOAD_IMG = 1;
String imgDecodableString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void loadImagefromGallery(View view) {
// Create intent to Open Image applications like Gallery, Google Photos
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
// Start the Intent
startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
// When an Image is picked
if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK
&& null != data) {
// Get the Image from data
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
// Get the cursor
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
// Move to first row
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
imgDecodableString = cursor.getString(columnIndex);
cursor.close();
ImageView imgView = (ImageView) findViewById(R.id.imgView);
// Set the Image in ImageView after decoding the String
imgView.setImageBitmap(BitmapFactory
.decodeFile(imgDecodableString));
} else {
Toast.makeText(this, "You haven't picked Image",
Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG)
.show();
}
}
最初,保持新添加的按钮关闭和获取图像串启动按钮,并设置onClickListener
到按钮后onActivityResult
方法。并使用intent extra将该图像字符串传递给下一个活动。
在onActivityResult
方法,
newButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(),NextActivity.class).putExtra("img",imgDecodableString));
}
});
我实现了ur代码......并跳转到下一个活动,并在那里得到空白页....在logcat中我得到这个...... **键img预期Parcelable但值是一个java.lang 。串。返回了默认值
如何在下一个活动中获取字符串您在下一个活动中编写了哪些代码? –
这是下一个activit的代码---------------------------------> _ protected void onCreate(Bundle savedInstanceState ){ super.onCreate(savedInstanceState); 位图imgDecodeableString =(位图)this.getIntent()。getParcelableExtra(“img”); setContentView(R.layout.activity_display); ImageView imgView =(ImageView)findViewById(R.id.imageView); imgView.setImageBitmap(imgDecodeableString); } } –
你可以把数据在你的第一个活动像
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
,并在第二个活动分析数据如下图所示:
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
您的ImagePath转换为位图码剪断是:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
如果你不明白的解决方案。不要放弃奉献。意图只能从一个活动到另一个活动的原始数据类型,如果你想把图像的数据,你必须将其转换位图并解析它上面解释如果你不感兴趣不投入它。谢谢 !! –
我还没有用它 –
没关系,但你必须解决它。如果你有一个小尺寸的图像,它会工作。 –
最好的方式来处理大图像将使用Serializable,因为Intent和Parcelable都有大小限制。
这个问题的答案可能会帮助:Serializing and De-Serializing android.graphics.Bitmap in Java
//第一活动
Bitmap b = null;
String bitmapString = getStringFromBitmap(b);
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("bitmapString", bitmapString);
//第二活动
String receivedBitmapString = getIntent().getStringExtra("bitmapString");
Bitmap receivedBitmap = getBitmapFromString(receivedBitmapString);
//功能
private String getStringFromBitmap(Bitmap bitmapPicture) {
/*
* This functions converts Bitmap picture to a string which can be
* JSONified.
* */
final int COMPRESSION_QUALITY = 100;
String encodedImage;
ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream();
bitmapPicture.compress(Bitmap.CompressFormat.PNG, COMPRESSION_QUALITY,
byteArrayBitmapStream);
byte[] b = byteArrayBitmapStream.toByteArray();
encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
return encodedImage;
}
private Bitmap getBitmapFromString(String jsonString) {
/*
* This Function converts the String back to Bitmap
* */
byte[] decodedString = Base64.decode(stringPicture, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
return decodedByte;
}
来源:Link
将文件名传递给下一个活动。 –
您已经拥有包含图像串,只是用发送意图额外 – faruk
我写使用发送代码意图奥妙,但如何得到它的下一个活动公共无效nextActivity(查看视图){ 意向意图=新的意图(这,DisplayActivity.class); intent.putExtra(“bmp_image”,imgDecodableString); startActivity(intent); } –