Android examples for android.graphics:Bitmap Operation
Cut Bitmap by size
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 getCutBitmap(File file, int desiredWidth, int desiredHeight) { Bitmap resizeBmp = null;//from w ww. jav a2 s .co m 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 != 1) { 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.outHeight = destHeight; opts.outWidth = destWidth; opts.inJustDecodeBounds = false; opts.inDither = false; Bitmap bitmap = BitmapFactory.decodeFile(file.getPath(), opts); if (bitmap != null) { resizeBmp = getCutBitmap(bitmap, desiredWidth, desiredHeight); } return resizeBmp; } public static Bitmap getCutBitmap(Bitmap bitmap, int desiredWidth, int desiredHeight) { if (!checkBitmap(bitmap)) { return null; } if (!checkSize(desiredWidth, desiredHeight)) { return null; } Bitmap resizeBmp = null; try { int width = bitmap.getWidth(); int height = bitmap.getHeight(); int offsetX = 0; int offsetY = 0; if (width > desiredWidth) { offsetX = (width - desiredWidth) / 2; } else { desiredWidth = width; } if (height > desiredHeight) { offsetY = (height - desiredHeight) / 2; } else { desiredHeight = height; } resizeBmp = Bitmap.createBitmap(bitmap, offsetX, offsetY, desiredWidth, desiredHeight); } catch (Exception e) { e.printStackTrace(); } finally { if (resizeBmp != bitmap) { bitmap.recycle(); } } return resizeBmp; } }