图像字符串数据发送到下一个活动

时间:2017-10-06 20:27:08

标签: java android android-intent

我从图库中选择图像并通过相机拍摄图像。代码如下:

ib2 = (ImageButton) findViewById(R.id.imageButton2);
        ib2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(cameraIntent, CAMERA_REQUEST);
            }
        });


private static final int PICK_IMAGE = 150;
    Uri imageUrl;

    private void openGallery() {

        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
        startActivityForResult(intent, PICK_IMAGE);
    }

    @Override
    protected void onActivityResult(int requestcode, int resultcode, Intent data) {
        super.onActivityResult(requestcode, resultcode, data);
        if (resultcode == RESULT_OK && requestcode == PICK_IMAGE) {
            imageUrl = data.getData();
            try {

                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),imageUrl );
                // Log.d(TAG, String.valueOf(bitmap));

                ImageView imageView = (ImageView) findViewById(R.id.imageView);
                imageView.setImageBitmap(bitmap);

            } catch (IOException e) {
                e.printStackTrace();
            }
           // im.setImageURI(imageUrl);

        }
        if (requestcode == CAMERA_REQUEST && resultcode == RESULT_OK) {
            Bitmap photo;
            photo = (Bitmap) data.getExtras().get("data");
            im.setImageBitmap(photo);//set image to Imageview


        }
    }

然后尝试将此图像转换为base 64字符串。代码如下:

private String imageToString(){
        Bitmap photo = null;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] imageBytes = baos.toByteArray();
        String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
        return encodedImage;
}

然后将数据发送到另一个活动。代码如下:

 Intent next = new Intent(MainActivity.this, EventAdding.class);

                        Bundle bn = new Bundle();
                        bn.putString("image", imageToString());
    startActivity(next);

问题是我无法同步所有这些程序。转换图像字符串数据不会完美地发送到下一个活动。图像数据不会发送。当我试图显示图像时,会显示一个空白图像。请告诉我正确的代码

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码将图像从一个活动发送到其他活动。

Bitmap bitmap = youimage
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("image", bitmap);
startActivity(intent);

现在像这样在secondActivity中获取图像。

 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("image");

然后在ImageView中显示位图。

答案 1 :(得分:0)

您可以使用intent.getParcelableExtra(key)方法