package czd.lib.view.smartimageview; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Rect; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * Project: oasap * User: chenzhidong * Date: 14-6-29 * Time: 16:58 */ public class CaptureImage implements SmartImage{ private String url; private String cookie=""; private boolean cancel=false; public CaptureImage(String url) { this.url = url.replaceAll(" ", "%20"); } @Override public Bitmap getBitmap(Context context, SmartImageTask.OnCompleteHandler handler) { return getImageFromUrl(this.url,handler); } private Bitmap getImageFromUrl(String url,SmartImageTask.OnCompleteHandler handler){ InputStream is = null; try { HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection(); conn.setConnectTimeout(3000); conn.setUseCaches(true); conn.setInstanceFollowRedirects(true); conn.setRequestProperty("Cookie",cookie); int code=conn.getResponseCode(); cookie=conn.getHeaderField("Set-Cookie"); if(code>300) return null; else { is=conn.getInputStream(); BitmapFactory.Options o=new BitmapFactory.Options(); o.inInputShareable=true; o.inPurgeable=true; return BitmapFactory.decodeStream(is,new Rect(0,0,0,0),o); } }catch (Exception e) { e.printStackTrace(); }finally { try{ if(is!=null) is.close(); }catch (IOException e) { e.printStackTrace(); } } return null; } @Override public void cancel() { cancel=true; Thread.currentThread().interrupt(); } }