Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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:如何将图像加载到位图中_Android_Image_Load_Bitmap_Sd Card - Fatal编程技术网

Android:如何将图像加载到位图中

Android:如何将图像加载到位图中,android,image,load,bitmap,sd-card,Android,Image,Load,Bitmap,Sd Card,我能够从drawable文件夹将资源图像加载到位图中,甚至可以精细缩放,但是现在我需要从SD卡上存储的任何图像加载图像,我可以看到这将允许我查看和选择 startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), 1); 然而,到目前为止,我还无法准确地找出返回的数据以及如何将其加载到位图中 更新

我能够从drawable文件夹将资源图像加载到位图中,甚至可以精细缩放,但是现在我需要从SD卡上存储的任何图像加载图像,我可以看到这将允许我查看和选择

    startActivityForResult(new Intent(Intent.ACTION_PICK,
         android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), 1);
然而,到目前为止,我还无法准确地找出返回的数据以及如何将其加载到位图中

更新:

这就是我现在得到的

@Override
protected void onActivityResult(int requestCode, int resultCode,
            Intent intent) {
  super.onActivityResult(requestCode, resultCode, intent);

if (resultCode == RESULT_OK) {

    Uri contentURI =  Uri.parse(intent.getDataString());

    c = mSurfaceHolder.lockCanvas();

    tempCanvas.setBitmap(mDrawing);

    Bitmap tempBitmap = null;

    ContentResolver cr = getContentResolver();

    try {           
      InputStream in = cr.openInputStream(contentURI);
      BitmapFactory.Options options = new BitmapFactory.Options();
      options.inSampleSize=8;
      tempBitmap = BitmapFactory.decodeStream(in,null,options);
        }
    catch (Exception ee) {
      tempBitmap = BitmapFactory.decodeResource(getResources(),
                    R.drawable.icon);
        }

    tempCanvas.drawBitmap(tempBitmap, 0, 0, null);
    c.drawBitmap(tempBitmap, 0, 0, null);

    mSurfaceHolder.unlockCanvasAndPost(c);
  }
}
并在logcat显示的“应用程序意外停止”中出错

ERROR/AndroidRuntime(24768): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=com.htc.HTCAlbum.action.ITEM_PICKER_FROM_COLLECTIONS dat=content://media/external/images/media/185 }} to activity {com.example.colorbook/com.example.colorbook.Colorbook}: java.lang.NullPointerException


Complete logcat as it finished gallery view activity and tried to return intent;<br>
02-03 10:47:22.042: DEBUG/MainActivity(22984): [HTCAlbum][MainActivity][onPause]: Begin<br>02-03 10:47:22.042: DEBUG/MainActivity(22984): store mCurrentPosition_backup=0<br>02-03 10:47:22.042: DEBUG/DisplayManager(22984): store mCurrentPosition_backup=0<br>02-03 10:47:22.092: DEBUG/dalvikvm(22984): GC_EXPLICIT freed 1459 objects / 91880 bytes in 44ms<br>02-03 10:47:22.102: INFO/AlbumMapper(22984): Create thumbnail for: /mnt/sdcard/workspace/Colorbook/res/drawable/fileload.png<br>02-03 10:47:22.102: DEBUG/ThumbnailWorker(22984): [stopWorking] Stop working, now join #37, /mnt/sdcard/workspace/Colorbook/res/drawable/fileload.png<br>02-03 10:47:22.102: DEBUG/AlbumAdapter(22984): set thread priority to normal<br>02-03 10:47:22.102: DEBUG/AbstractViewGetter(22984): Raise getter prefetcher thread priority to normal.<br>02-03 10:47:22.102: DEBUG/AbstractViewGetter(22984): Join getter prefetch thread<br>02-03 10:47:22.102: DEBUG/AbstractViewGetter(22984): Getter prefetch join time: 2<br>02-03 10:47:22.102: DEBUG/AlbumMapper(22984): cancel current decode operation<br>02-03 10:47:22.182: DEBUG/AndroidRuntime(24768): Shutting down VM<br>02-03 10:47:22.182: WARN/dalvikvm(24768): threadid=1: thread exiting with uncaught exception (group=0x400259f8)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768): FATAL EXCEPTION: main<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=com.htc.HTCAlbum.action.ITEM_PICKER_FROM_COLLECTIONS dat=content://media/external/images/media/185 }} to activity {com.example.colorbook/com.example.colorbook.Colorbook}: java.lang.NullPointerException<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3734)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.app.ActivityThread.access$2800(ActivityThread.java:135)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2166)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.os.Handler.dispatchMessage(Handler.java:99)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.os.Looper.loop(Looper.java:144)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.app.ActivityThread.main(ActivityThread.java:4937)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at java.lang.reflect.Method.invokeNative(Native Method)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at java.lang.reflect.Method.invoke(Method.java:521)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at dalvik.system.NativeStart.main(Native Method)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768): Caused by: java.lang.NullPointerException<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at com.example.colorbook.Colorbook.loadImageToCanvas(Colorbook.java:524)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at com.example.colorbook.Colorbook.onActivityResult(Colorbook.java:231)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.app.Activity.dispatchActivityResult(Activity.java:3931)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3730)<br>02-03 10:47:22.182: ERROR/AndroidRuntime(24768):     ... 11 more<br>02-03 10:47:22.202: WARN/ActivityManager(97):   Force finishing activity com.example.colorbook/.Colorbook<br>02-03 10:47:22.704: WARN/ActivityManager(97): Activity pause timeout for HistoryRecord{46207010 com.example.colorbook/.Colorbook}<br>02-03 10:47:22.742: DEBUG/Sensors(97): close_akm, fd=114<br>02-03 10:47:22.852: DEBUG/MainActivity(22984): [HTCAlbum][MainActivity][onStop]: Begin<br>02-03 10:47:22.902: DEBUG/dalvikvm(22984): GC_EXPLICIT freed 398 objects / 23264 bytes in 38ms<br>02-03 10:47:22.902: DEBUG/MainActivity(22984): [HTCAlbum][MainActivity][onDestroy]: Begin<br>02-03 10:47:22.912: DEBUG/OnlineDataCenter(22984): [HTCAlbum][OnlineDataCenter][unbindContext]: Begin<br>02-03 10:47:22.912: DEBUG/OnlineDataCenter(22984): [HTCAlbum][OnlineDataCenter][unbindContext]: com.htc.album.MainActivity@46075ec0context size: 0<br>02-03 10:47:22.912: DEBUG/OnlineDataCenter(22984): [HTCAlbum][OnlineDataCenter][unbindContext]: No more clients. release resources.<br>02-03 10:47:22.912: DEBUG/OnlineDataCenter(22984): [HTCAlbum][OnlineDataCenter][unbindContext]: End 0<br>02-03 10:47:22.912: DEBUG/ThumbnailWorker(22984): [stopWorking] Stop working, now join #-1, Decode Complete!!<br>02-03 10:47:22.912: DEBUG/AlbumAdapter(22984): set thread priority to normal<br>02-03 10:47:22.912: DEBUG/AlbumMapper(22984): cancel current decode operation<br>02-03 10:47:22.912: DEBUG/AlbumMapper(22984): cancel current decode operation<br>02-03 10:47:22.912: DEBUG/ThumbnailWorker(22984): [stopWorking] Stop working, now join #-1, Decode Complete!!<br>02-03 10:47:22.912: DEBUG/AlbumAdapter(22984): set thread priority to normal<br>02-03 10:47:22.912: DEBUG/AlbumAdapter(22984): Join worker thread in destroy<br>02-03 10:47:22.912: DEBUG/AlbumAdapter(22984): Join time: 0<br>02-03 10:47:22.922: INFO/MainActivity(22984): mWorker finishes jobs at onDestroy().<br>02-03 10:47:22.932: DEBUG/CollectionsActivity(22984): [HTCAlbum][CollectionsActivity][onDestroy]: Begin<br>02-03 10:47:22.932: DEBUG/AlbColAdap(22984): [HTCAlbum][AlbumCollectionsAdapter][onDestroy]: Begin<br>02-03 10:47:22.942: INFO/BatteryStatsImpl(97): notePhoneSignalStrengthLocked: 2->3<br>02-03 10:47:22.952: DEBUG/AlbColAdap(22984): [HTCAlbum][AlbumCollectionsAdapter][onDestroy]: End<br>
ERROR/AndroidRuntime(24768):java.lang.RuntimeException:未能传递结果ResultInfo{who=null,request=1,result=-1,data=Intent{act=com.htc.HTCAlbum.action.ITEM_PICKER_FROM_COLLECTIONS dat=content://media/external/images/media/185 }}到活动{com.example.colorbook/com.example.colorbook.colorbook}:java.lang.NullPointerException
完成logcat,因为它完成了gallery view活动并试图返回意图
02-03 10:47:22.042:DEBUG/MainActivity(22984):[HTCAlbum][MainActivity][onPause]:开始
02-03 10:47:22.042:DEBUG/MainActivity(22984):store mCurrentPosition\u backup=0
02-03 10:47:22.092:DEBUG/dalvikvm(22984):GC_显式释放1459个对象/91880字节,时间为44ms
02-03 10:47:22.102:INFO/AlbumMapper(22984):为/mnt/sdcard/workspace/Colorbook/res/drawable/fileload.png创建缩略图
02-03 10:47:22.102:DEBUG/ThumbnailWorker(22984):[停止工作]停止工作,现在加入#37,/mnt/sdcard/workspace/Colorbook/res/drawable/fileload.png
02-03 10:47:22.102:DEBUG/AlbumAdapter(22984):将线程优先级设置为正常
02-03 10:47:22.102:DEBUG/AbstractViewGetter(22984):将getter预取线程优先级提高为正常。
02-03 10:47:22.102:DEBUG/AbstractViewGetter(22984):加入getter预取线程
02-03 10:47:22.102:DEBUG/AbstractViewGetter(22984):getter预取加入时间:2
02-03 10:47:22.102:DEBUG/AlbumMapper(22984):取消当前解码操作
02-03 10:47:22.182:DEBUG/AndroidRuntime(24768):关闭VM
02-03 10:47:22.182:WARN/dalvikvm(24768):threadid=1:线程以未捕获的异常(组=0x400259f8)退出
02-03 10:47:22.182:错误/AndroidRuntime(24768):致命异常:main
02-03 10:47:22.182:错误/AndroidRuntime(24768):java.lang.RuntimeException:未能传递结果ResultInfo{who=null,请求=1,结果=-1,数据=Intent{act=com.htc.HTCAlbum.action.ITEM_PICKER_FROM_COLLECTIONS dat=content://media/external/images/media/185 }}到活动{com.example.colorbook/com.example.colorbook.colorbook}:java.lang.NullPointerException
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.app.ActivityThread.deliverResults(ActivityThread.java:3734)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.app.ActivityThread.handleSendResult(ActivityThread.java:3776)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.app.ActivityThread.access$2800(ActivityThread.java:135)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2166)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.os.Handler.dispatchMessage(Handler.java:99)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.os.Looper.Looper.java:144)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.app.ActivityThread.main(ActivityThread.java:4937)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在java.lang.reflect.Method.invokenactive(Native Method)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在java.lang.reflect.Method.invoke(Method.java:521)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在dalvik.system.NativeStart.main(本机方法)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):原因:java.lang.NullPointerException
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):位于com.example.colorbook.colorbook.loadImageToCanvas(colorbook.java:524)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):位于com.example.colorbook.colorbook.colorbook.onActivityResult(Colorbook.java:231)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.app.Activity.dispatchActivityResult(Activity.java:3931)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):在android.app.ActivityThread.deliveerresults(ActivityThread.java:3730)
02-03 10:47:22.182:ERROR/AndroidRuntime(24768):…11更多
02-03 10:47:22.202:WARN/ActivityManager(97):强制完成活动com.example.colorbook/.colorbook
02-03 10:47:22.704:WARN/ActivityManager(97):历史记录{46207010 com.example.colorbook/.colorbook}
02-03 10:47:22.742:调试/传感器(97):close_akm,fd=114
02-03 10:47:22.852:DEBUG/MainActivity(22984):[HTCAlbum][MainActivity][onStop]:Begin
02-03 10:47:22.902:DEBUG/dalvikvm(22984):GC_在38ms内显式释放398个对象/23264字节
02-03 10:47:22.902:DEBUG/MainActivity(22984):[HTCAlbum][MainActivity][onDestroy]:Begin(22984):[HTCAlbum][OnlineDataCenter][unbindContext]:开始调试/在线数据中心(22984):[HTCAlbum][OnlineDataCenter][unbindContext]:com.htc.album。MainActivity@46075ec0context大小:0
02-03 10:47:22.912:调试/联机数据中心(22984):[HTCAlbum][OnlineDataCenter][unbindContext]:没有更多客户端。释放资源。
02-03 10:47:22.912:DEBUG/OnlineDataCenter(22984):[HTCAlbum][OnlineDataCenter][unbindContext]:End 0
02-03 10:47:22.912:DEBUG/ThumbnailWorker(22984):[stopWorking]停止工作,现在加入#-1,解码完成!!
02-03 10:47:22.912:DEBUG/AlbumAdapter(22984):将线程优先级设置为No
myIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    switch(requestCode){
    case IMAGE_UPLOAD: //this is a constant, in your case I think it should be '1'
        if(imageReturnedIntent != null){// e.g. "back" pressed"
            Uri contentURI = Uri.parse(imageReturnedIntent.getDataString());        
            ContentResolver cr = getContentResolver();
            InputStream in = cr.openInputStream(contentURI);
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize=8;
            Bitmap thumb = BitmapFactory.decodeStream(in,null,options);
       }
    break;

}
public void onActivityResult(int reqCode, int resultCode, Intent data) {
     ...some code to make sure the result is valid
     Uri imageUri = data.getData();
     imageView.setImageUri(imageUri);
}
private String getPath(Uri uri) {
String[]  data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}