android.os.TransactionTooLargeException 与裁剪 Activity

标签 android image crop

我有一个应用程序,用户可以在其中为他们的用户配置文件上传图像。在我的应用程序中,我允许用户使用 native 裁剪器裁剪图像。但是,当我尝试裁剪大图像时,我的 Logcat 中出现以下错误:

!!! FAILED BINDER TRANSACTION !!!
Exception when starting activity com.example.somename/com.example.somename.Profile
android.os.TransactionTooLargeException

我使用以下代码启动裁剪器:

Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
cropIntent.setDataAndType(imageFileUri , "image/*");
cropIntent.putExtra("crop", "true");
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
cropIntent.putExtra("outputX", 265);
cropIntent.putExtra("outputY", 265);
cropIntent.putExtra("scale", true);
cropIntent.putExtra("return-data", true);
startActivityForResult(cropIntent, PIC_CROP);

然后在我的 onActivityResult 中,以下代码获取裁剪后的图像:

Bundle extras = data.getExtras();
Bitmap selectedBitmap = extras.getParcelable("data");
imgDisplayPic.setImageBitmap(selectedBitmap);

我假设问题出在 cropper 试图将大位图作为 parcelable 发送回我的 Activity 。有没有办法解决?还是另一种获取裁剪图像的方法?

在此先感谢您的帮助。

最佳答案

万一其他人遇到这个问题,我已经设法在以下链接的帮助下解决了它:http://www.androidworks.com/crop_large_photos_with_android .我通过实现链接中的选项 #2 解决了这个问题。

正如我最初所怀疑的那样,问题是从裁剪器将一个大位图作为可打包文件发回。相反,我所做的(如链接所示)是将裁剪器的内容保存到一个临时文件中,然后在我的主要 Activity/fragment 中读取该内容。为了不通过 parcelable 发回内容,我必须对上面的代码做的主要更改是

cropIntent.putExtra("return-data", false);

并添加

cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempURI);

其中“tempURI”是将保存裁剪器内容的临时文件的 URI。然后在 onActivityResult 中,您需要删除以下行

Bitmap selectedBitmap = extras.getParcelable("data");

相反,您将需要一些代码来从您的临时文件中读取内容。

希望这对遇到此问题的任何人有所帮助。

编辑: 链接失效了,试试Internet Archive一个代替。

关于android.os.TransactionTooLargeException 与裁剪 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18386131/

相关文章:

android - 在对话框 fragment 中方向改变目标 fragment 改变后

android - 如何在 ListView 中增加和减少 TextView 的值?

python - 如何检测 table 的水平线和垂直线并消除噪音?

wpf - Xaml、wpf 图像位置和裁剪问题

android - 如何像 Facebook 个人资料图片选择工具那样移动和缩放图片?

java - 尽管 Eclipse 中的一切都正确,但 Android ActivityNotFoundException

html - 从浏览器打开图像到图库

image - 如何在Firemonkey中拉伸(stretch)图像?

CSS - 裁剪图像高度以匹配文本长度

Android:在模拟器上安装 Market 应用程序?