content: package com.andrei.template.utils;
  
  import android.graphics.Bitmap;
  import android.graphics.BitmapShader;
  import android.graphics.Canvas;
  import android.graphics.Paint;
  
  import com.squareup.picasso.Transformation;
  
  public class CircleTransform implements Transformation {
    private int x;
    private int y;
  
    @Override public Bitmap transform(Bitmap source) {
      int size = Math.min(source.getWidth(), source.getHeight());
  
      x = (source.getWidth() - size) / 2;
      y = (source.getHeight() - size) / 2;
  
      Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
      if (squaredBitmap != source) {
        source.recycle();
      }
  
      Bitmap.Config config =
          source.getConfig() != null ? source.getConfig() : Bitmap.Config.ARGB_8888;
      Bitmap bitmap = Bitmap.createBitmap(size, size, config);
  
      Canvas canvas = new Canvas(bitmap);
      Paint paint = new Paint();
      BitmapShader shader =
          new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
      paint.setShader(shader);
      paint.setAntiAlias(true);
  
      float r = size / 2f;
      canvas.drawCircle(r, r, r, paint);
  
      squaredBitmap.recycle();
      return bitmap;
    }
  
    @Override public String key() {
      return "circle(x=" + x + ",y=" + y + ")";
    }
  }
  
  