2013-09-23 41 views
0

嗨,我已经从一个URL下载了一个图像,并将其作为位图写入文件。我试图从文件中检索位图并显示它。有谁知道如何做到这一点?继承人我试过它不会错误,但它不显示图像。Android从内部文件返回位图

Global.java

public static void saveBitmapToFile(Context activityContext, Bitmap bitmap, String FileName){ 

    try{ 
     File file = new File(FileName); 
     FileOutputStream fOut = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut); 
     fOut.flush(); 
     fOut.close();} 
    catch (Exception e) { 
     e.printStackTrace(); 
     Log.i(null, "Save file error!"); 

     } 

    } 

    public static Bitmap returnBitmapFromFile(Context activityContext, String FileName){ 
     Bitmap bitmap = BitmapFactory.decodeFile(FileName); 
     return bitmap; 

    } 

GetBitmap.java

public void downloadUserPhoto(){ 



      String userPhotoUrl = "http://static.bbci.co.uk/h4discoveryzone/ic/newsimg/media/images/229/129/68805000/jpg/_68805145_pahs2.jpg" 

      userPhoto = Global.createBitmapFromUrl(this, userPhotoUrl); 
      Global.saveBitmapToFile(this, userPhoto, "user_photo"); 
}      

public void getUserPhoto(){ 
     loadingText.setText("Getting User Pictures..."); 
      Bitmap setUserPhoto = Global.returnBitmapFromFile(this, "user_photo"); 
     logo.setImageBitmap(setUserPhoto); 


     } 
+0

你在哪里存储文件?外部公共还是私人? –

+0

@Maxim Shoustin内部 –

+0

看到我的回应,希望它能帮到你 –

回答

1

尝试通过使用FileInputStream打开它:

public static Bitmap returnBitmapFromFile(Context activityContext, String FileName){ 
    FileInputStream in = new FileInputStream(FileName); 
     BufferedInputStream buf = new BufferedInputStream(in); 
     byte[] bitMapA= new byte[buf.available()]; 
     buf.read(bitMapA); 
     buf.close(); 
     in.close(); 
     Bitmap bitmap = BitmapFactory.decodeByteArray(bitMapA, 0, bitMapA.length); 
    return bitmap; 

} 

另一种方法是使用openFileInput

public static Bitmap returnBitmapFromFile(Context activityContext, String FileName){ 

    FileInputStream fis;  

    try { 
     fis = openFileInput(FileName); 
     Bitmap bitmap = BitmapFactory.decodeStream(fis); 
     fis.close(); 
        return bitmap; 
    } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
        return null; 
    } catch (IOException e) { 
     e.printStackTrace(); 
        return null; 
    } 
} 
+0

它说我需要关闭buf,但我该怎么做? –

+0

其仍未显示图像 –

+0

增加了'buf.close(); ';和其他方式 –