package org.openintents.filemanager.util;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.VectorDrawable;
public final class ImageUtils {
private ImageUtils() {
}
/**
* Resizes specific a Bitmap with keeping ratio.
*/
public static Bitmap resizeBitmap(Bitmap drawable, int desireWidth,
int desireHeight) {
int width = drawable.getWidth();
int height = drawable.getHeight();
if (0 < width && 0 < height && desireWidth < width
|| desireHeight < height) {
// Calculate scale
float scale;
if (width < height) {
scale = (float) desireHeight / (float) height;
if (desireWidth < width * scale) {
scale = (float) desireWidth / (float) width;
}
} else {
scale = (float) desireWidth / (float) width;
}
// Draw resized image
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
Bitmap bitmap = Bitmap.createBitmap(drawable, 0, 0, width, height,
matrix, true);
Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(bitmap, 0, 0, null);
drawable = bitmap;
}
return drawable;
}
/**
* Resizes specific a Drawable with keeping ratio.
*/
public static Drawable resizeDrawable(Drawable drawable, int desireWidth,
int desireHeight) {
Drawable dr = drawable;
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
if (0 < width && 0 < height && desireWidth < width
|| desireHeight < height) {
if (drawable instanceof BitmapDrawable) {
Bitmap b = ((BitmapDrawable) drawable).getBitmap();
Bitmap resized = Bitmap.createScaledBitmap(b, desireWidth,
desireHeight, true);
dr = new BitmapDrawable(resized);
}
}
return dr;
}
}