package com.itcast.util;import java.io.BufferedInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.URL;import java.net.URLConnection;import java.security.MessageDigest;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.Log;public class ImageUtil {private static final String SDCARD_CACHE_IMG_PATH = Environment.getExternalStorageDirectory().getPath() + "/llc/images/";/** * 保存图片到SD卡 * @param imagePath * @param buffer * @throws IOException */public static void saveImage(String imagePath, byte[] buffer)throws IOException {File f = new File(imagePath);if (f.exists()) {return;} else {File parentFile = f.getParentFile();if (!parentFile.exists()) {parentFile.mkdirs();}f.createNewFile();FileOutputStream fos = new FileOutputStream(imagePath);fos.write(buffer);fos.flush();fos.close();}}/** * 从SD卡加载图片 * @param imagePath * @return */public static Bitmap getImageFromLocal(String imagePath){File file = new File(imagePath);if(file.exists()){Bitmap bitmap = BitmapFactory.decodeFile(imagePath);file.setLastModified(System.currentTimeMillis());return bitmap;}return null;}/** * Bitmap转换到Byte[] * @param bm * @return */public static byte[] bitmap2Bytes(Bitmap bm){       ByteArrayOutputStream bas = new ByteArrayOutputStream();         bm.compress(Bitmap.CompressFormat.JPEG, 100, bas);         return bas.toByteArray();      }  /** * 从本地或者服务端加载图片 * @return * @throws IOException  */public static Bitmap loadImage(final String imagePath,final String imgUrl,final ImageCallback callback) {Bitmap bitmap = getImageFromLocal(imagePath);if(bitmap != null){return bitmap;}else{//从网上加载final Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {if(msg.obj!=null){Bitmap bitmap = (Bitmap) msg.obj;callback.loadImage(bitmap, imagePath);}}};Runnable runnable = new Runnable() {@Overridepublic void run() {try {URL url = new URL(imgUrl);Log.e("图片加载", imgUrl);URLConnection conn = url.openConnection();conn.connect();BufferedInputStream bis = new BufferedInputStream(conn.getInputStream(),8192) ;Bitmap bitmap = BitmapFactory.decodeStream(bis);//保存文件到sd卡saveImage(imagePath,bitmap2Bytes(bitmap));Message msg = handler.obtainMessage();msg.obj = bitmap;handler.sendMessage(msg);} catch (IOException e) {Log.e(ImageUtil.class.getName(), "保存图片到本地存储卡出错!");}}};ThreadPoolManager.getInstance().addTask(runnable);}return null;}// 返回图片存到sd卡的路径public static String getCacheImgPath() {return SDCARD_CACHE_IMG_PATH;}public static String md5(String paramString) {String returnStr;try {MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");localMessageDigest.update(paramString.getBytes());returnStr = byteToHexString(localMessageDigest.digest());return returnStr;} catch (Exception e) {return paramString;}}/** * 将指定byte数组转换成16进制字符串 *  * @param b * @return */public static String byteToHexString(byte[] b) {StringBuffer hexString = new StringBuffer();for (int i = 0; i < b.length; i++) {String hex = Integer.toHexString(b[i] & 0xFF);if (hex.length() == 1) {hex = '0' + hex;}hexString.append(hex.toUpperCase());}return hexString.toString();}/** *  * @author Mathew * */public interface ImageCallback{public void loadImage(Bitmap bitmap,String imagePath);}}

更多相关文章

  1. android:设计一个能在图片上涂鸦的程序。
  2. android 滚动的缓冲图片
  3. android NinePatchDrawable 9.png图片使用制作
  4. android 线程方式打印log到sd卡
  5. Android(安卓)查看保存图片到相册
  6. First project in android
  7. Android(安卓)下拉刷新 ListRefresh 从网络加载图片
  8. android 保存和读取文件
  9. android 之Dialog对话框(简易版)

随机推荐

  1. Android Studio --“Cannot resolve symb
  2. 如何编译 Chrome for Android
  3. Android UI--ProgressBar
  4. Android,iOS打开手机QQ与指定用户聊天界面
  5. Android建立模拟器进行调试
  6. android String 特殊字符处理
  7. Android与H5交互——设置本地缓存
  8. Android 导入android源码有错,R.java文件
  9. Android使用DrawerLayout实现抽屉式侧滑
  10. Android(安卓)SdCard 新建文件夹并在文件