无法保存位图并将其转换为uri android studio

问题描述 投票:0回答:1

我正在尝试将图像转换为 uri 并将其保存到相机的文件夹中,只要在相机上拍照不是问题,但是当您想要转换并保存它时,应用程序将自行退出。请亲爱的任何人提供下面的一些示例脚本代码。

活动

ActivityResultLauncher<Intent> activityResultLauncher;

buttonSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent ix = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                activityResultLauncher.launch(ix);
            }
        });

查看

activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
    @Override
    public void onActivityResult(ActivityResult result) {
        Bundle exstra = result.getData().getExtras();
        Uri imageUri;
        Bitmap bitmap = (Bitmap) exstra.get("data");
        WeakReference<Bitmap> result1 = new WeakReference<>(Bitmap.createScaledBitmap(bitmap,
                bitmap.getHeight(),bitmap.getWidth(),false).copy(Bitmap.Config.RGB_565,true));
        Bitmap bmP = result1.get();
        imageUri = saveImage(bmP, UploadCamera.this);
        imgT.setImageURI(imageUri);
        lv_txt.setText(""+imageUri);
    }
});

保存图像

private Uri saveImage(Bitmap img, Context context) {
    File imagesFolder = new File(context.getCacheDir(),"photome");
    Uri uris = null;
    try{
        imagesFolder.mkdir();
        File file = new File(imagesFolder,"captureimage.jpg");
        FileOutputStream stream = new FileOutputStream(file);
        img.compress(Bitmap.CompressFormat.JPEG,100,stream);
        stream.flush();
        stream.close();
        uris = FileProvider.getUriForFile(context.getApplicationContext(),"",file);
    } catch (FileNotFoundException e){

    } catch (IOException e){

    }
    return uris;
}

我尝试在清单中添加提供程序,但出现错误,应用程序提前退出且无法运行。

在清单中添加提供商请求

<provider
    android:authorities="${applicationId}.provider"
    android:name="androidx.core.content.FileProvider"
    android:exported="true"
    android:grantUriPermissions="true">
    <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"></meta-data>
</provider>

我希望你能帮我解决这个问题。

android android-studio save-image
1个回答
0
投票

启动相机

int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
String fileName = System.currentTimeMillis() + ".jpg"; 
tempFile = new File(Environment.getExternalStorageDirectory() + savePath, fileName); 
if (currentapiVersion < 24) { 
    Uri fileUri = Uri.fromFile(tempFile);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); onActivityResult 
} else { 
    ContentValues contentValues = new ContentValues(1);
    contentValues.put(MediaStore.Images.Media.DATA, tempFile.getAbsolutePath());
    Uri fileUri = getApplication().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
}
startActivityForResult(intent, TAKE_PHOTOS_CODE); 

读取图片并显示到ImangView

imageView.setImageURI(Uri.fromFile(tempFile));
© www.soinside.com 2019 - 2024. All rights reserved.