Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将URI转换为位图的问题(2014年):_Android_Image_Bitmap - Fatal编程技术网

Android 将URI转换为位图的问题(2014年):

Android 将URI转换为位图的问题(2014年):,android,image,bitmap,Android,Image,Bitmap,简而言之,我正在尝试从手机图库中选择一幅图像,作为位图显示,以便在其他活动中播放(获取平均RGB) 首先,我遇到了几个关于URI到位图转换的主题。他们中的许多人都有如下建议(来自:): 位图行是重要的行。每当我在模拟器上运行Android应用程序时,该应用程序就会崩溃(Eclipse中的调试器确认在URI-->位图转换行中发生),如果我将转换放在不同的活动中(它是捆绑的),那么它仍然会在URI->位图转换行中崩溃 我不知道这是为什么。我已经试着在初始意图上同时使用“外部内容”和“内部内容”两种意

简而言之,我正在尝试从手机图库中选择一幅图像,作为位图显示,以便在其他活动中播放(获取平均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)

我认为这将有助于每一个人