package external.smartimageview;
import java.util.Map;
import com.aiyou.bbs.utils.BBSManager;
import com.aiyou.utils.http.HttpManager;
import com.aiyou.utils.image.ImageFactory;
import com.aiyou.utils.logcat.Logcat;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
public class WebImage implements SmartImage {
private static final String TAG = WebImage.class.getSimpleName();
private static WebImageCache webImageCache;
private Context mContext;
private String mUrl;
public WebImage(String url) {
this.mUrl = url;
}
public Bitmap getBitmap(Context context, Map<String, String> header) {
mContext = context;
// Don't leak context
if (webImageCache == null) {
webImageCache = new WebImageCache(context);
}
// Try getting bitmap from cache first
Bitmap bitmap = null;
if (mUrl != null) {
// bitmap = webImageCache.get(url);
if (bitmap == null) {
bitmap = getBitmapFromUrl(mUrl, header);
if (bitmap != null) {
webImageCache.put(mUrl, bitmap);
}
}
}
return bitmap;
}
@SuppressLint("NewApi")
private Bitmap getBitmapFromUrl(String url, Map<String, String> header) {
Bitmap bitmap = null;
byte[] data = null;
if (url.contains(BBSManager.API_HEAD)) {
// 论坛图片
url += BBSManager.FORMAT + "?appkey=" + BBSManager.APPKEY;
}
data = HttpManager.getInstance(mContext).getHttpByte(mContext, url, header);
if (data != null) {
try {
// 对图像的大小进行处理
// bitmap = ImageFactory.getFixedBmp(data, 200, 200, false);
bitmap = ImageFactory.getMaxBmp(data, false);
} catch (OutOfMemoryError e) {
Logcat.e(TAG, "getBitmapFromUrl OOM");
}
}
return bitmap;
}
public static void removeFromCache(String url) {
if (webImageCache != null) {
webImageCache.remove(url);
}
}
@Override
public String getUrl() {
return mUrl;
}
}