package com.distantfuture.videos.imageutils; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Shader; import com.squareup.picasso.Transformation; public class CircleImageTransformation implements Transformation { Paint mFillPaint; Paint mStrokePaint; @Override public Bitmap transform(Bitmap source) { Bitmap result = null; if (mFillPaint == null) { mFillPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mStrokePaint = new Paint(Paint.ANTI_ALIAS_FLAG); mStrokePaint.setStyle(Paint.Style.STROKE); mStrokePaint.setStrokeWidth(2.0f); mStrokePaint.setColor(0x99000000); } int width = source.getWidth(); int height = source.getHeight(); result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(result); // draw using circle into another bitmap, add shadows and shit int centerX = width / 2, centerY = height / 2, radius = (width / 2); BitmapShader s = new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mFillPaint.setShader(s); canvas.drawCircle(centerX, centerY, radius, mFillPaint); canvas.drawCircle(centerX, centerY, radius - 1, mStrokePaint); source.recycle(); return result; } @Override public String key() { return "circleTransform"; } }