Search code examples
androidbitmapsambasmb

Converting SmbFile(Samba) to bitmap in Android


Is there any easy way to convert SmbFile to bitmap, something like this - Bitmap bitmap = BitmapFactory.decodeFile(mSmbFile.getPath()) ?


Solution

  • //decodes image and scales it to reduce memory consumption
    private Bitmap decodeFile(SmbFile file){
        try {
            //Decode image size
            BitmapFactory.Options o = new BitmapFactory.Options();
            o.inJustDecodeBounds = true;
            BitmapFactory.decodeStream(new SmbFileInputStream(file),null,o);
    
            //The new size we want to scale to
            final int REQUIRED_SIZE=70;
    
            //Find the correct scale value. It should be the power of 2.
            int scale=1;
            while(o.outWidth/scale/2>=REQUIRED_SIZE && o.outHeight/scale/2>=REQUIRED_SIZE)
                scale*=2;
    
            //Decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize=scale;
    
            System.gc();
    
            return BitmapFactory.decodeStream(new SmbFileInputStream(file), null, o2);
        } catch (Exception e) {}
        return null;
    }