当前位置: 首页 > 知识库问答 >
问题:

图像裁剪在Android7.0中不起作用

双弘益
2023-03-14

当我裁剪图像时,应用程序在Android7.0中崩溃了。

异常:02-06 12:40:53.717 567 1-5685/com.tribyte.itutor2 E/databaseutils:将异常写入包java.lang.securityException:拒绝权限:写入android.support.v4.content.fileProvider uri内容:

示例代码:

private void performCrop()
{
try 
{
Intent intent = new Intent("com.android.camera.action.CROP");
List<ResolveInfo> resInfoList = this.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
this.grantUriPermission(packageName, temppicUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}

String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(picUri.toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);

intent.setDataAndType(picUri,mimetype);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra("crop", "true");
intent.putExtra(MediaStore.EXTRA_OUTPUT, temppicUri);
intent.putExtra("outputX", 512);
intent.putExtra("outputY", 512);
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
//start the activity - we handle returning in onActivityResult
if (intent.resolveActivity(getPackageManager()) != null) 
{
intent.putExtra("return-data", true);   
startActivityForResult(intent, PIC_CROP);
}
}
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();
}    
}

共有1个答案

艾嘉石
2023-03-14

根据我有限的经验,我认为它是由OOM引起的。代码如下所示,

intent.putExtra(“outputx”,512);intent.putExtra(“outputy”,512);

512*512的尺寸在屏幕分辨率更大的更高品质设备中显得太大了。如果图像很大,可以减小图像的大小。

 类似资料:
  • 我需要对matlab中的图像执行以下操作: 加载图像 计算图像的FFT(快速傅立叶变换) 将频率分量移到中心 像follow一样裁剪图像(如果图像分辨率为1000x1000,则图像所需的部分类似于以下坐标:100100800800。这是一个较小的图像。(应用过滤器去除高频的想法) 反向移位 傅里叶逆变换 . . . 我的代码如下所示: 问题是,当我想裁剪图像时,我的功能无法裁剪类型为“复杂双”的图

  • 使用 Illustrator 中的“图像裁剪”功能裁剪链接或嵌入的图像。 裁剪图像 您可以在 Illustrator 中裁剪链接或嵌入的图像。在裁剪时,您可以使用直观的构件控件处理选定的图像。“图像裁剪”功能只对当前选定的图像有效。此外,链接的图像在裁剪后会变为嵌入的图像。 注意: 裁剪掉的图像部分会被丢弃,且无法恢复。 在裁剪图像时,无法变换图像。在选择“裁剪图像”选项后,如果您尝试变换图像,则

  • 我试图在从图库中选择图像后使用intent来裁剪图像。以下是我的代码片段 在这里,我使用PICK_IMAGE_REQUEST意图句柄调用上面的代码段 由于我在裁剪后使用了相同的意图,即PICK_IMAGE_REQUEST,可能会出现什么问题

  • 我将<code>背景 1.back_xml: 2.瓷砖.xml 现在,我将back.xml设置为< code >背景以< code>LinearLayout工作正常。 我需要有一个圆角,以及它的边框。但是我只有圆角的边框,而不是图像,我的代码中有什么问题吗? 这是我的照片:

  • 本节,我们将裁剪图像的一部分,然后把其结果绘制到画布上。 图3-2 裁剪图像 绘制步骤 按照以下步骤,裁剪图像的一部分,再把结果绘制到画布: 1. 定义画布上下文: window.onload  = function(){ var canvas  = document.getElementById("myCanvas"); var context  = canvas.getContext

  • 问题内容: 下面的代码可以很好地裁剪图像,这是我想要的,但是对于较大的图像,它也可以正常工作。有什么办法可以缩小图像吗? 想法是,在裁剪之前,我将能够使每个图像的大小大致相同,以便每次都能获得良好的效果 代码是 问题答案: 如果要生成缩略图,则必须首先使用调整图像大小。您必须调整图像的大小,以使图像较小侧的尺寸等于拇指的相应侧。 例如,如果源图像为1280x800px,拇指为200x150px,则