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; } }