diff --git a/ImageProxySample/imageproxylib/src/main/java/cn/nbhope/imageproxylib/transform/CircleTransform.java b/ImageProxySample/imageproxylib/src/main/java/cn/nbhope/imageproxylib/transform/CircleTransform.java new file mode 100644 index 0000000..c03e285 --- /dev/null +++ b/ImageProxySample/imageproxylib/src/main/java/cn/nbhope/imageproxylib/transform/CircleTransform.java @@ -0,0 +1,56 @@ +package cn.nbhope.imageproxylib.transform; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Paint; + +import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; +import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; + +/** + * @Description 将图片转换成圆形 + * Created by EthanCo on 2016/8/30. + */ +public class CircleTransform extends BitmapTransformation { + + public CircleTransform(Context context) { + super(context); + } + + private static Bitmap circleCrop(BitmapPool pool, Bitmap source) { + if (source == null) return null; + + int size = Math.min(source.getWidth(), source.getHeight()); + int x = (source.getWidth() - size) / 2; + int y = (source.getHeight() - size) / 2; + + // TODO this could be acquired from the pool too + Bitmap squared = Bitmap.createBitmap(source, x, y, size, size); + + Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888); + if (result == null) { + result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(result); + Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG | Paint + .ANTI_ALIAS_FLAG); + paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader + .TileMode.CLAMP)); + float r = size / 2f; + canvas.drawCircle(r, r, r, paint); + return result; + } + + @Override + protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { + return circleCrop(pool, toTransform); + } + + @Override + public String getId() { + return getClass().getName(); + } +} diff --git a/MyMaterialDialogTest/.idea/gradle.xml b/MyMaterialDialogTest/.idea/gradle.xml index f2bb1a1..508b3d9 100644 --- a/MyMaterialDialogTest/.idea/gradle.xml +++ b/MyMaterialDialogTest/.idea/gradle.xml @@ -3,9 +3,8 @@