Convert a File Object to Bitmap

JavaAndroidCachingBitmapUniversal Image-Loader

Java Problem Overview


I am using Universal-Image-Loader and there is this functionality that access the file cache of the image from sd card. But I don't know how to convert the returned file cache into bitmap. Basically I just wanted to assign the bitmap to an ImageView.

File mSaveBit = imageLoader.getDiscCache().get(easyPuzzle);

Log.d("#ImageValue: ", ""+mSaveBit.toString());
mImageView.setImageBitmap(mSaveBit);

Error: "The method setImageBitmap(Bitmap) in the type ImageView is not applicable for the arguments (File)"

Java Solutions


Solution 1 - Java

You should be able to use BitmapFactory:

File mSaveBit; // Your image file
String filePath = mSaveBit.getPath();  
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
mImageView.setImageBitmap(bitmap);

Solution 2 - Java

  1. Define File

     String fileName = "/myImage.jpg";
     File file = new File(fileName); 
    
  2. get Bitmap of Image

     Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
    
  3. Set Bitmap to ImageView

     myImageView.setImageBitmap(bitmap);
    

Solution 3 - Java

You can use this function to get Bitmap from file path

fun getBitmap(filePath:String):Bitmap?{
    var bitmap:Bitmap?=null
    try{
        var f:File = File(path)
        var options = BitmapFactory.Options()
        options.inPreferredConfig = Bitmap.Config.ARGB_8888
        bitmap = BitmapFactory.decodeStream(FileInputStream(f),null,options)
    }catch (e:Exception){

    }
    return bitmap
}

Solution 4 - Java

Here is a simple code to create a scaled image for ImageView in this case

  • Width:400

  • Height:400

    final File file = new File(Environment.getExternalStorageDirectory(),"b.jpg"); ImageView img = (ImageView) findViewById(R.id.imageview); img.setImageBitmap(Bitmap.createScaledBitmap(BitmapFactory.decodeFile(file.getAbsolutePath()),400,400,false));

Solution 5 - Java

Kotlin Version

  if (requestCode==PICK_IMAGE_REQUEST){
            if (data!=null){
                selectedfileUri=data.data
                if (selectedfileUri!=null && !selectedfileUri!!.path.isEmpty()){
                    val file = FileUtils.getFile(context,selectedfileUri)
                    val bitmap = BitmapFactory.decodeFile(file.path)
                    uimg!!.setImageBitmap(bitmap)
                }
            }
        }

Solution 6 - Java

This is not the right question, but if you use flag .cacheInMemory() in ImageLoader setup you can retrive the bitmap without need of recreate at any time using BitmapFactory to safe memory usage .

Just use:

Bitmap bitmap = ImageLoader.getInstance().getMemoryCache()·get("url as key");

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrahstameView Question on Stackoverflow
Solution 1 - JavaKarlView Answer on Stackoverflow
Solution 2 - JavaHardik GajeraView Answer on Stackoverflow
Solution 3 - JavaMunibView Answer on Stackoverflow
Solution 4 - JavaBilal MustafaView Answer on Stackoverflow
Solution 5 - JavaKingsley MitchellView Answer on Stackoverflow
Solution 6 - JavaEuler TiagoView Answer on Stackoverflow