【问题标题】:Passing image through intent resulting lose quality of image通过意图传递图像导致图像质量下降
【发布时间】:2018-03-10 19:34:34
【问题描述】:

当我从移动相机捕获图像并将其保存到本地存储时,它的质量很好,但是当我在我的 android 应用程序中获取此图像时,图像质量下降很多,甚至无法读取图片中的文本。我如何在应用程序中获取图像在安卓应用中不失画质。

第一个活动

    public class MainActivity extends AppCompatActivity {
    static final int REQUEST_IMAGE_CAPTURE = 1;
    ImageButton imageButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageButton = findViewById(R.id.camera);

        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if(takePictureIntent.resolveActivity(getPackageManager()) != null){
                    startActivityForResult(takePictureIntent,REQUEST_IMAGE_CAPTURE);
                }
            }
        });

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {

            Bitmap photo = (Bitmap) data.getExtras().get("data");


            //ByteArrayOutputStream stream = new ByteArrayOutputStream();

            //photo.compress(Bitmap.CompressFormat.PNG,100 , stream);

            //byte[] byteArray = stream.toByteArray();

            Intent i = new Intent(MainActivity.this,PrintActivity.class);
            i.putExtra("image",photo);
            startActivity(i);
        }
    }
}

第二个活动

public class PrintActivity extends AppCompatActivity {
ImageView imageView;
Bitmap bmp;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_print);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    imageView = findViewById(R.id.imageViewer);

   // byte[] byteArray = getIntent().getByteArrayExtra("image");
    //bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

    bmp = getIntent().getParcelableExtra("image");

    imageView.setImageBitmap(bmp);

}

public void btnOnClickPrint(View v){
    PrintHelper printHelper = new PrintHelper(this);
    printHelper.setScaleMode(PrintHelper.SCALE_MODE_FIT);
    printHelper.printBitmap("Image Print",bmp);
}
}

【问题讨论】:

标签: android


【解决方案1】:
Bitmap photo = (Bitmap) data.getExtras().get("data");

这只是原始图片的缩略图。

所以无论你做什么,它都会保留一个缩略图。

您应该以不同的方式使用该相机意图。指示相机应用程序应保存完整图片的位置(使用EXTRA_STREAM),然后将该路径告知第二个活动,以便它可以加载原始图片。

【讨论】:

    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2014-06-27
    • 2010-12-03
    • 1970-01-01
    相关资源
    最近更新 更多