Reputation: 1202
This is driving me insane! Here's my code (I know this file exists):
File imageFile = new File("/sdcard/gallery_photo_4.jpg");
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
BitmapDrawable d = new BitmapDrawable(getResources(), imageFile.getAbsolutePath());
jpgView.setImageDrawable(d);
The error occurs on that last line (line 28, referenced below).
Error output:
W/dalvikvm( 865): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime( 865): FATAL EXCEPTION: main
E/AndroidRuntime( 865): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.camera/org.example.camera.Imgview}: java.lang.NullPointerException
E/AndroidRuntime( 865): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime( 865): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime( 865): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime( 865): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime( 865): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 865): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 865): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 865): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 865): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 865): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 865): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 865): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 865): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 865): at org.example.camera.Imgview.onCreate(Imgview.java:28)
E/AndroidRuntime( 865): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 865): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime( 865): ... 11 more
W/ActivityManager( 59): Force finishing activity org.example.camera/.Imgview
My layout looks like (probably not necessary):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/imageView" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:scaleType="center">
</ImageView>
</LinearLayout>
Thank you very much for any help.
Upvotes: 16
Views: 58541
Reputation: 10633
USE THIS LINE OF CODE FOR GETTING IMAGE FROM SDCARD. AND THEN DISPLAY IT IN YOUR IMAGEVIEW
where "FileInputOutput" is a folder in your sdcard
String path = Environment.getExternalStorageDirectory()+ "/FileInputOutput/img1.jpg";
File imgFile = new File(path);
if(imgFile.exists())
{
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageView1);
myImage.setImageBitmap(myBitmap);
}
else
Toast.makeText(v.getContext(),"no IMAGE IS PRESENT'",Toast.LENGTH_SHORT).show();
}
Upvotes: 3
Reputation: 25755
I would rather use a BitmapFactory
to decode the Image from the file-path:
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
jpgView.setImageBitmap(bitmap);
The Docs say:
If the specified file name is null, or cannot be decoded into a bitmap, the function returns null.
Can you check if the code works with another image and if you can open your image on your PC thought. Maybe the file is corrupt.
Upvotes: 33
Reputation: 481
This code worked for me finally:
setContentView(R.layout.main);
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/sample-1.jpg");
jpgView.setImageBitmap(bitmap);
Crash was happening because setContentView() was not performed before attaching the jpgview:
code that was crashing:
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/sample-1.jpg");
jpgView.setImageBitmap(bitmap);
setContentView(R.layout.main);
Upvotes: 10
Reputation: 3341
String imagePath = Environment.getExternalStorageDirectory().toString() + PATH_TO_IMAGE;
return Drawable.createFromPath(imagePath)
Upvotes: 7