package pasta.music.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.support.graphics.drawable.VectorDrawableCompat;
public class ImageUtils {
public static Drawable getVectorDrawable(Context context, int resId) {
VectorDrawableCompat drawable;
try {
drawable = VectorDrawableCompat.create(context.getResources(), resId, context.getTheme());
} catch (Exception e) {
e.printStackTrace();
return new ColorDrawable(Color.TRANSPARENT);
}
if (drawable != null)
return drawable.getCurrent();
else
return new ColorDrawable(Color.TRANSPARENT);
}
public static int darkColor(int color) {
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[2] *= 0.8f;
return Color.HSVToColor(hsv);
}
public static int lightColor(int color) {
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[2] /= 0.8f;
return Color.HSVToColor(hsv);
}
public static Bitmap drawableToBitmap(Drawable drawable) {
if (drawable == null) drawable = new ColorDrawable(Color.TRANSPARENT);
if (drawable instanceof BitmapDrawable) return ((BitmapDrawable) drawable).getBitmap();
if (drawable instanceof VectorDrawableCompat)
return Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
int width = drawable.getIntrinsicWidth();
width = width > 0 ? width : 1;
int height = drawable.getIntrinsicHeight();
height = height > 0 ? height : 1;
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
public static Bitmap blurBitmap(Bitmap bitmap) {
Paint paint = new Paint();
paint.setAlpha(180);
Bitmap resultBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(resultBitmap);
canvas.drawBitmap(bitmap, 0, 0, paint);
int blurRadius = Math.max(bitmap.getWidth(), bitmap.getHeight()) / 10;
for (int row = -blurRadius; row < blurRadius; row += 2) {
for (int column = -blurRadius; column < blurRadius; column += 2) {
if (column * column + row * row <= blurRadius * blurRadius) {
paint.setAlpha((blurRadius * blurRadius) / ((column * column + row * row) + 1) * 2);
canvas.drawBitmap(bitmap, row, column, paint);
}
}
}
return resultBitmap;
}
}