package fast.rocket.utils; import fast.rocket.builder.ImageViewBuilder.ScaleMode; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.RectF; public class ImageUtils { public Bitmap resize(Bitmap b, int resizeWidth, int resizeHeight, ScaleMode scaleMode) { Bitmap bitmap = Bitmap.createBitmap(resizeWidth, resizeHeight, b.getConfig()); Canvas canvas = new Canvas(bitmap); RectF destination = new RectF(0, 0, resizeWidth, resizeHeight); if (scaleMode != ScaleMode.FitXY) { float ratio; float xratio = (float) resizeWidth / (float) b.getWidth(); float yratio = (float) resizeHeight / (float) b.getHeight(); if (scaleMode == ScaleMode.CenterCrop) ratio = Math.max(xratio, yratio); else ratio = Math.min(xratio, yratio); float postWidth = b.getWidth() * ratio; float postHeight = b.getHeight() * ratio; float transx = (resizeWidth - postWidth) / 2; float transy = (resizeHeight - postHeight) / 2; destination.set(transx, transy, resizeWidth - transx, resizeHeight - transy); } canvas.drawBitmap(b, null, destination, null); return bitmap; } }