Android examples for android.graphics:Bitmap Operation
Scale Bitmap to given width and height
import android.graphics.Bitmap; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.lemon.assist.Base64; import android.lemon.dct.FDCT; import android.view.View; import android.view.View; import android.widget.ImageView; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class Main{ public static Bitmap getScaleBitmap(File file, int desiredWidth, int desiredHeight) { Bitmap resizeBmp = null;/*ww w . j a v a2 s. c om*/ BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(file.getPath(), opts); int srcWidth = opts.outWidth; int srcHeight = opts.outHeight; int[] size = resizeToMaxSize(srcWidth, srcHeight, desiredWidth, desiredHeight); desiredWidth = size[0]; desiredHeight = size[1]; float scale = getMinScale(srcWidth, srcHeight, desiredWidth, desiredHeight); int destWidth = srcWidth; int destHeight = srcHeight; if (scale != 0) { destWidth = (int) (srcWidth * scale); destHeight = (int) (srcHeight * scale); } opts.inPreferredConfig = Bitmap.Config.RGB_565; opts.inPurgeable = true; opts.inInputShareable = true; if (scale < 0.25) { opts.inSampleSize = 2; } else if (scale < 0.125) { opts.inSampleSize = 4; } else { opts.inSampleSize = 1; } opts.outWidth = destWidth; opts.outHeight = destHeight; opts.inJustDecodeBounds = false; opts.inDither = false; resizeBmp = BitmapFactory.decodeFile(file.getPath(), opts); resizeBmp = getScaleBitmap(resizeBmp, scale); return resizeBmp; } public static Bitmap getScaleBitmap(Bitmap bitmap, int desiredWidth, int desiredHeight) { if (!checkBitmap(bitmap)) { return null; } Bitmap resizeBmp = null; int srcWidth = bitmap.getWidth(); int srcHeight = bitmap.getHeight(); int[] size = resizeToMaxSize(srcWidth, srcHeight, desiredWidth, desiredHeight); desiredWidth = size[0]; desiredHeight = size[1]; float scale = getMinScale(srcWidth, srcHeight, desiredWidth, desiredHeight); resizeBmp = getScaleBitmap(bitmap, scale); if (resizeBmp.getWidth() > desiredWidth || resizeBmp.getHeight() > desiredHeight) { resizeBmp = getCutBitmap(resizeBmp, desiredWidth, desiredHeight); } return resizeBmp; } public static Bitmap getScaleBitmap(Bitmap bitmap, float scale) { if (!checkBitmap(bitmap)) { return null; } if (scale == 1) { return bitmap; } Bitmap resizeBmp = null; try { int bmpW = bitmap.getWidth(); int bmpH = bitmap.getHeight(); Matrix matrix = new Matrix(); matrix.postScale(scale, scale); resizeBmp = Bitmap.createBitmap(bitmap, 0, 0, bmpW, bmpH, matrix, true); } catch (Exception e) { e.printStackTrace(); } finally { if (resizeBmp != bitmap) { bitmap.recycle(); } } return resizeBmp; } }