繁体   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