import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class ImageUtils { public static final String CACHEDIR = Environment.getExternalStorageDirectory() + "/ll"; public static boolean isMounted() { return Environment.MEDIA_MOUNTED.equals( Environment.getExternalStorageState()); } public static void saveImg(String url, byte[] bytes) throws IOException { if (!isMounted()) return; File dir = new File(CACHEDIR); if (!dir.exists()) dir.mkdirs(); FileOutputStream fos = new FileOutputStream(new File(dir, getName(url))); fos.write(bytes); fos.close(); } public static void saveImg(String url, Bitmap bitmap) throws IOException { if (!isMounted()) return; File dir = new File(CACHEDIR); if (!dir.exists()) dir.mkdirs(); //将图片对象写入到指定输出流中 bitmap.compress(getFormat(url), 100, new FileOutputStream(new File(dir, getName(url)))); } private static Bitmap.CompressFormat getFormat(String url) { // TODO 获取图片的格式 String fileName = getName(url,0); if (fileName.endsWith("png")) { return Bitmap.CompressFormat.PNG; } return Bitmap.CompressFormat.JPEG; } public static Bitmap getImg(String url) { if (!isMounted()) return null; File imgFile = new File(CACHEDIR, getName(url)); if (imgFile.exists()) { //return BitmapFactory.decodeFile(imgFile.getAbsolutePath()); FileInputStream fin = null; try { fin = new FileInputStream(imgFile); byte[] bytes = StreamUtil.readStream(fin); return BitmapFactory.decodeByteArray(bytes,0,bytes.length); } catch (Exception e) { e.printStackTrace(); } finally { StreamUtil.close(fin); } } return null; } public static String getName(String url) { //return url.substring(url.lastIndexOf("/")+1); return md5(url); } public static String getName(String url, int end) { // return url.substring(url.lastIndexOf("/")+1,end); return url.substring(url.lastIndexOf("/")+1); } public static String md5(String stringContent) { String ret = null; if (stringContent != null) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); byte[] data = digest.digest(stringContent.getBytes()); BigInteger bigInteger = new BigInteger(1, data); ret = bigInteger.toString(16); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } return ret; } }