gpt4 book ai didi

java - 位图到uri转换android

转载 作者:行者123 更新时间:2023-12-02 09:43:09 32 4
gpt4 key购买 nike

从图库中选择裁剪图像后如何从位图获取 uri

我试过了

public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.PNG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}

但是 uri = null

我想从中获取uri

if (resultCode == Activity.RESULT_OK && requestCode == PICK_IMAGE_REQUEST) {
Uri imageUri = data.getData();
performCrop(imageUri);
Log.e(TAG, "image before crop:" + imageUri);

}else if(resultCode == Activity.RESULT_OK && requestCode == PIC_CROP ){
// get the returned data
Bundle extras = data.getExtras();
// get the cropped bitmap
Bitmap selectedBitmap = extras.getParcelable("data");
getImageUri(this,selectedBitmap);
Uri ImageUri = data.getData();
Log.e(TAG, "image before crop:" + ImageUri);

在crop=null之前记录图像

---- 更新裁剪----

   private void performCrop(Uri picUri) {
try {
Intent cropIntent = new Intent("com.android.camera.action.CROP");
// indicate image type and Uri
cropIntent.setDataAndType(picUri, "image/*");
// set crop properties here
cropIntent.putExtra("crop", true);
// indicate aspect of desired crop
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
// indicate output X and Y
cropIntent.putExtra("outputX", 128);
cropIntent.putExtra("outputY", 128);
// retrieve data on return
cropIntent.putExtra("return-data", true);
// start the activity - we handle returning in onActivityResult
startActivityForResult(cropIntent, PIC_CROP);
}
// respond to users whose devices do not support the crop action
catch (ActivityNotFoundException anfe) {
// display an error message
String errorMessage = "Whoops - your device doesn't support the crop action!";
Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
toast.show();
}

最佳答案

我猜您正在从图库中选择一张图像。

津贴:

  • list 中读取/写入数据的权限
  • 验证权限并处理未授予权限的情况
  • 声明的请求代码:

    public static final int PICK_IMAGE = 1050;

(1)打开图像选择器 Activity

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);

Activity 中:

startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);

在 fragment 中:

fragment.startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);

(2) 从选择中检索图像:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){

if(resultCode == RESULT_OK && data != null && data.getData() != null ){

switch(requestCode){

case PICK_IMAGE_REQUEST:
//get filepath from the result of image selection
Uri filePath = data.getData();
//Start activity for result for crop for selected image
startCropActivity(filePath);
break;

case PIC_CROP:
// get the returned data
Bundle extras = data.getExtras();
// get the cropped bitmap
Bitmap selectedBitmap = extras.getParcelable("data");
//do whatever with the bitmap of the image
break;

}
}
}

按如下方式开始裁剪 Activity :

private void startCropActivity(Uri filePath){
try {
Intent cropIntent = new Intent("com.android.camera.action.CROP");
cropIntent.setDataAndType(filePath, "image/*");
cropIntent.putExtra("crop", true);
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
cropIntent.putExtra("outputX", 128);
cropIntent.putExtra("outputY", 128);
cropIntent.putExtra("return-data", true);

startActivityForResult(cropIntent, PIC_CROP);

}catch (ActivityNotFoundException anfe) {
// display an error message
Toast.makeText(this, "Could not crop", Toast.LENGTH_SHORT).show();

}
}

关于java - 位图到uri转换android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895538/

32 4 0
文章推荐: java - 如何指定 AutoWired Bean 的子依赖项
文章推荐: java - 在 Android Room 数据库中存储 List