首页 > 解决方案 > Android - 如何在不损失图像质量的情况下将位图图像从一个活动传递到另一个活动

问题描述

我想使用 Activity1 中的 Button 从我的移动图库中导入图像并在 Activity2 中显示它。

我正在使用以下代码来执行此操作:

在 MainAcitivity 中:

 public void pickImageFromGallery(){
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
        intent.setType("image/*");
        intent.putExtra("crop", "true");
        intent.putExtra("scale", false);
        intent.putExtra("outputX", 256);
        intent.putExtra("outputY", 256);
        intent.putExtra("aspectX", 0);
        intent.putExtra("aspectY", 0);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, PICK_PHOTO);
    }

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == PICK_PHOTO) {
            final Bundle extras = data.getExtras();
            if (extras != null) {
                //Get image
                Bitmap myPic = extras.getParcelable("data");
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                myPic.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                byte[] byteArray = stream.toByteArray();
                Intent intent = new Intent(this, MainActivity2.class);
                intent.putExtra("picture", byteArray);
                startActivity(intent);
        }
    }

在 MainActivity2 中:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Bundle extras = getIntent().getExtras();
        ImageView imageView = (ImageView)findViewById(R.id.myImage);
        byte[] byteArray = extras.getByteArray("picture");
        Bitmap bmp = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
        imageView.setImageBitmap(bmp);
}

我正在导入高质量图像,但 ImageView 中的图像质量非常低。谁能告诉我如何解决这个问题?

标签: javaandroid

解决方案


推荐阅读