Android 将URI转换为位图的问题(2014年):
简而言之,我正在尝试从手机图库中选择一幅图像,作为位图显示,以便在其他活动中播放(获取平均RGB) 首先,我遇到了几个关于URI到位图转换的主题。他们中的许多人都有如下建议(来自:): 位图行是重要的行。每当我在模拟器上运行Android应用程序时,该应用程序就会崩溃(Eclipse中的调试器确认在URI-->位图转换行中发生),如果我将转换放在不同的活动中(它是捆绑的),那么它仍然会在URI->位图转换行中崩溃 我不知道这是为什么。我已经试着在初始意图上同时使用“外部内容”和“内部内容”两种意图,两种选择都不重要。我将继续寻找解决我问题的潜在方法,但我现在时间很紧,我觉得如果我能从外部渠道得到一些建议会很有帮助Android 将URI转换为位图的问题(2014年):,android,image,bitmap,Android,Image,Bitmap,简而言之,我正在尝试从手机图库中选择一幅图像,作为位图显示,以便在其他活动中播放(获取平均RGB) 首先,我遇到了几个关于URI到位图转换的主题。他们中的许多人都有如下建议(来自:): 位图行是重要的行。每当我在模拟器上运行Android应用程序时,该应用程序就会崩溃(Eclipse中的调试器确认在URI-->位图转换行中发生),如果我将转换放在不同的活动中(它是捆绑的),那么它仍然会在URI->位图转换行中崩溃 我不知道这是为什么。我已经试着在初始意图上同时使用“外部内容”和“内部内容”两种意
有人知道为什么它总是在那条线上崩溃,或者我的问题是否有任何可能的解决方案吗?谢谢。请从uri获取inputstream
Uri IMAGE_URI = imageReturnedIntent.getData();
InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI);
Bitmap bitmap= BitmapFactory.decodeStream(image_stream );
启动意图
private static final int REGUEST_CODE = 100;
Intent photoPicker = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, REGUEST_CODE);
得到结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case REGUEST_CODE :
if(resultCode == RESULT_OK){
Uri IMAGE_URI = imageReturnedIntent.getData();
InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI);
Bitmap bitmap= BitmapFactory.decodeStream(image_stream );
my_img_view.setImageBitmap(bitmap)
}
}
Uri IMAGE_URI = imageReturnedIntent.getData();
InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI);
Bitmap bitmap= BitmapFactory.decodeStream(image_stream);
my_img_view.setImageBitmap(bitmap)
}您要传递的位图有多大?你能复制/粘贴你收到的错误信息吗 应用程序崩溃的一个可能原因是,可以在主内存中从一个活动传递到另一个活动的数据大小受到限制。我相信最大数据量约为1-2MB,这取决于硬件和操作系统版本,尽管我找不到参考
Uri imageUri = intent.getData(); Uri IMAGE_URI = imageReturnedIntent.getData();
InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI);
Bitmap bitmap= BitmapFactory.decodeStream(image_stream );
Intent photoPicker = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, REGUEST_CODE);
得到结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case REGUEST_CODE :
if(resultCode == RESULT_OK){
Uri IMAGE_URI = imageReturnedIntent.getData();
InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI);
Bitmap bitmap= BitmapFactory.decodeStream(image_stream );
my_img_view.setImageBitmap(bitmap)
}
}
Uri IMAGE_URI = imageReturnedIntent.getData();
InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI);
Bitmap bitmap= BitmapFactory.decodeStream(image_stream);
my_img_view.setImageBitmap(bitmap)
我认为这将有助于每一个人