如何从一个活动图像发送到另一个机器人?(How to send image from one act

2019-06-26 10:58发布

我有一个类上点击一个对话框,显示它有两个选项,从相机拍摄的图像或打开设备的图像画廊ImageView的一个ImageView的。 我想从一个类发送图像到另一个,因此它可以在ImageView的出现。 我从多小时搜索,但我只拿到大约从一个类发送文本数据another.Can任何一个讲述从一个类发送图像到另一个?

这是从发送方的类将带图像的代码。

   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");
        }
    }

对于任何帮助,谢谢

Answer 1:

你在你的活动作为一个位图图像获取,你也传递到另一个活动为位图与Intent.putExtra()是这样的:

第一项活动

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("bmp_Image", bmp); 

第二活动得到这样的:

Bitmap bmp = (Bitmap) intent.getParcelableExtra("bmp_Image"); 

你不需要从URL 获取URL负载

即从一个活动通过所拍摄的图像到另一个活动的最简单的方法。



Answer 2:

我还记得一些关于有对putExtra()和getExtra()约1MB大小的限制。 所以图片可能会超过此限制。 如何刚好路过的路径了吗?



Answer 3:

我的首选方式(我认为最直接的方式)是应用使用自己的应用实例,来存储所共有的超过1个活动变量。

创建一个类,姑且称之为MainApplication扩展android.app.Application并在清单中声明它:

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name=".MainApplication">

然后,你在这样的活动中的应用对象的实例:

MainApplication application = ((MainApplication)getApplication());

这里面的应用程序对象,你可以存储任何应用程序级的数据,并使用它像往常一样:

application.setImage(...);

application.getImage();


Answer 4:

我需要从一个活动发送到另一个图像的路径答案。 文件路径是图像的路径。

Intent open_displayPage=new Intent(MainActivity.this,display_page.class);
open_displayPage.putExtra("imagePath", filePath);

并获得另一项活动路径

final String path = getIntent().getStringExtra("imagePath");
org_bmp = BitmapFactory.decodeFile(path);


Answer 5:

采取一个Global.class和声明public static Bitmap bmp ;

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();
            Global.bmp=(Bitmap)extras.get("data");
        }
    }

而当u要使用Bitmap bitmap = Global.bmp ;



Answer 6:

我要告诉你没关系的最佳途径。

1)获取和发送图像URI

Uri imageUri = data.getData();
Intent newIntent = new Intent(Class.this, Class.class);
newIntent.putExtra(IMAGE_URI_KEY, imageUri);
startActivity(newIntent);

第2)接收图像,以及如何显示它

receivedImageUri = getIntent().getParcelableExtra(IMAGE_URI_KEY);
imageView.setImageURI(receivedImageUri);


Answer 7:

我不得不重新调整位有点不超过交易粘结剂的1MB限制。 您可以适应400的屏幕或使其DINAMIC它只是意味着是一个例子。 它工作正常,质量是好的。 它也快了很多,然后保存图像和后加载它,但你有大小限制。

public void loadNextActivity(){
Intent confirmBMP = new Intent(this,ConfirmBMPActivity.class);

ByteArrayOutputStream stream = new ByteArrayOutputStream();
Bitmap bmp = returnScaledBMP();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);

confirmBMP.putExtra("Bitmap",bmp);
startActivity(confirmBMP);
finish();

}
public Bitmap returnScaledBMP(){
Bitmap bmp=null;
bmp = tempBitmap;
bmp = createScaledBitmapKeepingAspectRatio(bmp,400);
return bmp;
}

当你恢复BMP与下面的代码你nextActivity:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_confirmBMP);
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("Bitmap");

}

我希望我的回答在某种程度上有帮助。 问候



Answer 8:

你可以使用一个单独的对象来存储您的图片:

public class SingletonModel {
    private Bitmap Image;
    private SingletonModel; 
    public static SingletonModel getInstance() {
        if (instance == null) {
            instance = new SingletonModel();
        }
        return instance;
    }

    public Bitmap getImage() {
       return this.Image
    }

    public Bitmap setImage(Bitmap ImageIn) {
        this.Image = ImageIn;
    }
}

而在你的第一个活动地说:

SingletonModel.getInstance().setImage(image);

而在你的第二个活动:

Bitmap image = SingletonModel.getInstance().getImage();

在可替代的,你可以创造出扩展对象Application ,所以这个对象为所有类是可见的(的想法是一样的,以一个单独的对象)。



文章来源: How to send image from one activity to another in android?