이 메서드는 내장 카메라로 촬영 한 이미지에서는 잘 작동하지만 외부 소스 (웹, 실제 카메라 등)에서 가져온 이미지의 경우에는 정상적으로 작동합니다. BitmapFactory.decodeStream (imageStream)은 null을 반환합니다. 누구든지 오류의 원인을 알 수 있습니까?BitmapFactory.decodeStream은 일부 이미지에 대해 null을 반환합니다.
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
Uri selectedImage = imageReturnedIntent.getData();
InputStream imageStream = null;
try {
imageStream = getContentResolver().openInputStream(selectedImage);
} catch (FileNotFoundException e) {
Log.d("onActivityResult", "FileNotFoundException");
e.printStackTrace();
}
Bitmap unscaledImage = BitmapFactory.decodeStream(imageStream);
image = Bitmap.createScaledBitmap(unscaledImage, IMAGE_SIZE, IMAGE_SIZE, false);
Log.d("Unscaled image byte count", "Bytes: " + unscaledImage.getByteCount());
Log.d("Scaled image byte count", "Bytes: " + image.getByteCount());
}
}
여러분의 도움에 감사드립니다 :
여기07-29 17:25:48.105: E/AndroidRuntime(32296): FATAL EXCEPTION: main
07-29 17:25:48.105: E/AndroidRuntime(32296): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.google.android.gallery3d.provider/picasa/item/5716149895129356946 flg=0x1 }} to activity {com.example.news_app/com.example.news_app.android.ui.SettingsActivity}: java.lang.NullPointerException
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.deliverResults(ActivityThread.java:3319)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.access$1100(ActivityThread.java:141)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.os.Handler.dispatchMessage(Handler.java:99)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.os.Looper.loop(Looper.java:137)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.main(ActivityThread.java:5041)
07-29 17:25:48.105: E/AndroidRuntime(32296): at java.lang.reflect.Method.invokeNative(Native Method)
07-29 17:25:48.105: E/AndroidRuntime(32296): at java.lang.reflect.Method.invoke(Method.java:511)
07-29 17:25:48.105: E/AndroidRuntime(32296): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-29 17:25:48.105: E/AndroidRuntime(32296): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-29 17:25:48.105: E/AndroidRuntime(32296): at dalvik.system.NativeStart.main(Native Method)
07-29 17:25:48.105: E/AndroidRuntime(32296): Caused by: java.lang.NullPointerException
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:474)
07-29 17:25:48.105: E/AndroidRuntime(32296): at com.example.news_app.android.ui.SettingsActivity.onActivityResult(SettingsActivity.java:84)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.Activity.dispatchActivityResult(Activity.java:5293)
07-29 17:25:48.105: E/AndroidRuntime(32296): at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
07-29 17:25:48.105: E/AndroidRuntime(32296): ... 11 more
은 내가 사용하는 방법입니다 :
여기 스택 추적입니다!
이미지에 대해 Uri의 selectedImage가 비어 있지 않은지 확인할 수 있습니까? 어쩌면 문제가있을 수 있습니다. 또한 이미지가 손상 될 수도 있습니다. – Moy
비트 맵로드와 관련이 없으므로 스택 추적을 다시 읽어야합니다. 이미 닫힌 커서를 다시 쿼리하려고 시도하는 것 같습니다. – Qberticus
안녕하세요 @Moises, URI를 확인하고 null이 아닙니다. 경로는 예를 들어 충돌하는 한 이미지의/picasa/item/5716149895129356946입니다. 두 개의 다른 출처 (Google 이미지 및 Picassa)에서 왔고 카메라로 촬영 한 다른 이미지가 올바르게 작동하기 때문에 이미지가 손상되지는 않습니다. 특정 유형의 이미지가 지원되지 않을 수 있습니까? – cheese1756