package com.cnblogs.android.cache; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.content.Context; import com.cnblogs.android.core.Config; public class ImageCacher { private Context context; public ImageCacher(Context context) { this.context = context; } public ImageCacher() { } /** * ͼƬ���� * * @author Administrator * */ public enum EnumImageType { Avatar, // ͷ�� Blog, // ���� News, // ���� RssIcon, // RSS���ķ��� Temp // ��ʱ�ļ��� } /** * �õ�ͼƬ��ַ�ļ��� * * @param imageType * @return */ public static String GetImageFolder(EnumImageType imageType) { String folder = Config.TEMP_IMAGES_LOCATION; switch (imageType) { default : case Temp : folder += "temp/"; break; case Avatar : folder += "avatar/"; break; case Blog : folder += "blog/"; break; case News : folder += "news/"; break; case RssIcon : folder += "rss/icon/"; break; } return folder; } static final Pattern patternImgSrc = Pattern .compile("<img(.+?)src=\"(.+?)\"(.+?)>"); /** * �õ�html�е�ͼƬ��ַ * * @param html * @return */ private static List<String> GetImagesList(String html) { List<String> listSrc = new ArrayList<String>(); Matcher m = patternImgSrc.matcher(html); while (m.find()) { listSrc.add(m.group(2)); } return listSrc; } /** * �õ���ͼƬ��ַ������·���� * * @param imgType * @param imageUrl * @return */ private static String GetNewImgSrc(EnumImageType imgType, String imageUrl) { if (imageUrl.contains("?")) {// �ض�?����ַ�����������ЧͼƬ imageUrl = imageUrl.substring(0, imageUrl.indexOf("?")); } imageUrl = imageUrl.substring(imageUrl.lastIndexOf("/") + 1); String folder = GetImageFolder(imgType); return "file:///mnt" + folder + imageUrl; } /** * ����html�е�ͼƬ * * @param imgType * @param html */ public void DownloadHtmlImage(EnumImageType imgType, String html) { AsyncImageLoader imageLoader = new AsyncImageLoader(context); switch (imgType) { case Blog : case News : case Temp : default : List<String> listSrc = GetImagesList(html); for (String src : listSrc) { imageLoader.loadDrawable(imgType, src); } break; case Avatar :// ����ͷ�� imageLoader.loadDrawable(imgType, html); break; } } /** * �õ���ʽ�����html * * @param imgType * @param html * @return */ public static String FormatLocalHtmlWithImg(EnumImageType imgType, String html) { List<String> listSrc = GetImagesList(html); for (String src : listSrc) { String newSrc = GetNewImgSrc(imgType, src); html = html.replace(src, newSrc); } return html; } }