Android保存網絡圖片至本地SD卡

/**
* 保存圖片到緩存
*
* @param imagePath
* @param bm
*/
public static void saveImage(String imagePath, Bitmap bm) {

    if (bm == null || imagePath == null || "".equals(imagePath)) {
        return;
    }
    File f = new File(imagePath);
    if (f.exists()) {
        return;
    } else {
        try {
            File parentFile = f.getParentFile();
            if (!parentFile.exists()) {//如果不存在此目錄則創建
                parentFile.mkdirs();
            }
            f.createNewFile();//創建圖片文件
            FileOutputStream fos;
            fos = new FileOutputStream(f);
            bm.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.close();
        } catch (FileNotFoundException e) {
            f.delete();
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
            f.delete();
        }
    }
}

/**
 * 獲取網絡圖片的數據
 * 
 * @param imgUrl
 *            網絡圖片的路徑
 * @return
 */
public static Bitmap getImage(String imgUrl) throws Exception {

    URL url = new URL(imgUrl);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    System.out.println("path:" + imgUrl);
    conn.setConnectTimeout(5000);
    conn.setRequestMethod("GET");
    if (conn.getResponseCode() == 200) {
        InputStream inStream = conn.getInputStream();
        byte[] img = StreamTool.read(inStream);
        Bitmap bitmap = BitmapFactory.decodeByteArray(img, 0, img.length);
        File sdCardDir = Environment.getExternalStorageDirectory();
        String imgPath = sdCardDir.getCanonicalPath() + "/hubuyiyuImg/helloAndroid.jpg";
        saveImage(imgPath, bitmap);
        return bitmap;
    }
    return null;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章