我在一个类中有一个imageView,并且在单击imageView时会出现一个对话框,其中有两个选项可以从相机中获取图像或打开设备的图库 . 我想将图像从一个类发送到另一个类,以便它可以出现在ImageView中 . 我从很多小时开始搜索,但我只是将文本数据从一个类发送到另一个类 . 任何人都可以告诉我将图像从一个类发送到另一个类?
这是来自发件人类的代码,它将拍摄图像 .
takeImg.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == event.ACTION_UP)
{
i=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i,cameraData);
}
return true;
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK)
{
Bundle extras=data.getExtras();
bmp=(Bitmap)extras.get("data");
}
}
对于任何帮助谢谢
8 回答
您将活动中的图像作为 Bitmap 获取,并且还将其作为位图传递给另一个活动,如 Intent.putExtra() ,如下所示:
First Activity .
并从 second Activity 得到:
你不需要 get url 和 load from url .
这是将 captured image 从一个Activity传递到另一个Activity的最简单方法 .
我记得有一点是putExtra()和getExtra()大小有限,大概是1mb . 因此,图片可能会超出此限制 . 如何将路径传递给图片?
我首选的方式(我认为最直接的方式)是在应用程序中使用自己的Application实例,以存储多于1个活动共有的变量 .
创建一个类,让我们称之为
MainApplication
,扩展android.app.Application
并在清单中声明它:然后,您在Activity中获取应用程序对象的实例,如下所示:
在此应用程序对象中,您可以存储任何应用程序级数据并像往常一样使用它:
我得到了将图像路径从一个活动发送到另一个活动所需的答案 . filePath是图像的路径 .
并在另一个活动中获得路径
拿一个
Global.class
并宣布public static Bitmap bmp
;当你想使用
Bitmap bitmap = Global.bmp
;我打算告诉你最好的方式 .
1)获取并发送图像URI
2)接收图像以及如何显示图像
我不得不将位图重新缩放一点,以不超过事务 Binders 的1mb限制 . 你可以调整你的屏幕400或使它成为dinamic它只是一个例子 . 它工作正常,质量很好 . 它也比保存图像和加载后快得多,但是你有尺寸限制 .
使用以下代码恢复nextActivity中的bmp后:
我希望我的答案在某种程度上有所帮助 . 问候
您可以使用Singleton对象来存储您的Image:
在你的第一个活动中:
在你的第二个活动中:
在替代方案中,您可以创建一个扩展
Application
的Object,因此该Object对于所有类都是可见的(这个想法与Singleton对象相同) .