簡體   English   中英

如何通過相機意圖將高質量圖像保存到手機圖庫

[英]how to save high quality image to phone gallery by camera intent

我正在嘗試開發將圖像保存到圖庫的應用程序。 我想通過意圖調用相機,捕獲圖像並將其保存在本地圖庫中,但問題是圖像質量很差。 誰能幫我弄清楚為什么?

if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
           
                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                someActivityResultLauncher.launch(cameraIntent);}
 

    @Override
    public void onActivityResult(ActivityResult result) {
        if (result.getResultCode() == RESULT_OK) {
            bitmap = (Bitmap) Objects.requireNonNull(result.getData()).getExtras().get("data");
        }
        imageView.setImageBitmap(bitmap);     
        saveimage(bitmap);
     }
private void saveimage(Bitmap bitmap){
     Uri images;
     ContentResolver contentResolver = getContentResolver();

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
         images = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
     }else {
         images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
     }
     ContentValues contentValues = new ContentValues();
     contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, System.currentTimeMillis() +".jpg");
     contentValues.put(MediaStore.Images.Media.MIME_TYPE, "images/*");
     Uri uri = contentResolver.insert(images, contentValues);
     try {
         OutputStream outputStream = contentResolver.openOutputStream(Objects.requireNonNull(uri));
         bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
         Objects.requireNonNull(outputStream);

        //

     }catch (Exception e){
        //
         e.printStackTrace();

     }
 }

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 如果你直接從數據中獲取圖像,它的質量很差

您的代碼是使用ActivityResultContracts.TakePicturePreview的舊版代碼。 專門設置返回一個低分辨率的bitmap,適合預覽。

相反,請使用ActivityResultContracts.TakePicture ,並將您的目標Uri作為合同的一部分提供。

有關更多信息,請參閱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM