如何将JPEG远程文件存储到手机内存/ SD卡中?

时间:2012-03-22 09:52:09

标签: android bitmap store sd-card jpeg

我需要在我的应用中添加新功能。我必须将很多来自互联网的JPG图像存储到手机中。

如果手机有sdcard,JPG文件必须存储在SD卡上。如果没有,它们必须存储在internalMemory上,只有在手机有空间的情况下才能存储它。

然后,我应该做这些事情:

  1. 检查手机是否有SDCARD。如果有,SDCARD目录是命运,如果没有,内存就是命运。
  2. 检查手机是否有空间存放照片。
  3. 如果有空格,请将照片存储到名为/Magazine/
  4. 的目录中

    我知道如何从互联网上获取JPG文件以及如何将其转换为BITMAP,但它是我所知道的唯一想法,我不知道如何将其存储为JPG,我不知道其他事情。

    public static Bitmap getRemoteBitmap(String url) {      
        Bitmap bm=null;
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpResponse response; 
        try { 
             ((AbstractHttpClient) httpclient).getCredentialsProvider().setCredentials(
                    new org.apache.http.auth.AuthScope(null,-1), 
                    new org.apache.http.auth.UsernamePasswordCredentials(MagazineStatus._username, MagazineStatus._password)); 
    
            response = httpclient.execute(new HttpGet(url)); 
            StatusLine statusLine = response.getStatusLine(); 
            if(statusLine.getStatusCode() == HttpStatus.SC_OK) { 
                try {                   
                    HttpEntity entity = response.getEntity();
                    InputStream content = entity.getContent();
                    bm=BitmapFactory.decodeStream(content );
                }catch(Exception ex) {Log.e("DBF Error",ex.toString());}                 
            }else { 
                response.getEntity().getContent().close(); 
                throw new IOException(statusLine.getReasonPhrase()); 
            } 
        }catch(ClientProtocolException cpe) {Log.e("ClientProtocolException @ at FPT",cpe.toString());} catch(Exception ex) {Log.e("Exception at FETCHPROJECTASK",ex.toString());} 
        return bm;
    }
    

    我在谷歌搜索如何做我需要的东西,但我找不到任何明确的信息,我首先要求你找到最好的方法,这是最佳的方式。

    感谢

2 个答案:

答案 0 :(得分:1)

因此上述方法的返回值为您提供了来自互联网的位图。

使用以下代码将其作为JPG保存到SD卡。

try {
    bm.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/sdcard/Magazine/Image001.jpg")));
    // bm is your decoded bitmap from internet
} catch (FileNotFoundException e) {             
    e.printStackTrace()
}

我希望它可以帮助你。

答案 1 :(得分:0)

检查SD卡是否存在:

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {

Log.i("tag", "SDCard is mounted");

}

要获得手机内存的大小:

Get free space on internal memory

File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return Formatter.formatFileSize(this, availableBlocks * blockSize);

添加你的文件夹名称只需获取context.getFilesDir()并与你的文件夹名称连接