android – 将URI转换为Bitmap的问题(2014):

简而言之,我正在尝试从电话库中选择一个图像,以显示为另一个活动中要播放的位图(获得平均RGB).

首先,我遇到了一些处理URI到位图转换的主题.很多人都有这样的建议(来自:Retrieve bitmap from uri):

Uri imageUri = intent.getData();
    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
    Imageview my_img_view = (Imageview ) findViewById (R.id.my_img_view);
    my_img_view.setimageBitmap(bitmap);

Bitmap行是重要的一行.每当我在我的模拟器上运行我的Android应用程序时,应用程序崩溃(Eclipse中的调试器确认在URI上发生 – >位图转换行),如果我将转换放在不同的活动中(它是捆绑的),那么它仍然在Uri上崩溃 – >位图转换线.

我不知道为什么会这样.我已经尝试在初始意图上设置“EXTERNAL_CONTENT_URI”和“INTERNAL_CONTENT_URI”,两种选择无关紧要.我将继续寻找我的问题的潜在解决方案,但我现在时间很短,我觉得如果我从外部来源得到一些建议会有所帮助.

任何人都知道为什么它总是在那条线上崩溃,或者我的问题是否有任何可能的解决方案?谢谢.

解决方法

请从uri获取输入流
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)
    }
}

}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...