android ---- ImageUtil工具類
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() + "/itcast/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(){ @Override public void handleMessage(Message msg) { if(msg.obj!=null){ Bitmap bitmap = (Bitmap) msg.obj; callback.loadImage(bitmap, imagePath); } } }; Runnable runnable = new Runnable() { @Override public 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); }
} </pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!