package com.andrewshu.android.reddit.captcha; import java.io.InputStream; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import com.andrewshu.android.reddit.common.Constants; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.util.Log; public abstract class CaptchaDownloadTask extends AsyncTask<Void, Void, Drawable> { private static final String TAG = "CaptchaDownloadTask"; private String _mCaptchaUrl; private HttpClient _mClient; public CaptchaDownloadTask(String captchaUrl, HttpClient client) { _mCaptchaUrl = captchaUrl; _mClient = client; } @Override public Drawable doInBackground(Void... voidz) { try { HttpGet request = new HttpGet(Constants.REDDIT_BASE_URL + "/" + _mCaptchaUrl); HttpResponse response = _mClient.execute(request); InputStream in = response.getEntity().getContent(); //get image as bitmap Bitmap captchaOrg = BitmapFactory.decodeStream(in); // create matrix for the manipulation Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(2f, 2f); // recreate the new Bitmap Bitmap resizedBitmap = Bitmap.createScaledBitmap (captchaOrg, captchaOrg.getWidth() * 3, captchaOrg.getHeight() * 3, true); BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); return bmd; } catch (Exception e) { if (Constants.LOGGING) Log.e(TAG, "download captcha", e); } return null; } }