package com.mogujie.widget.imageview;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import com.squareup.picasso.Transformation;
/**
*
* @author dolphinWang
* @time 2014/03/10
*/
class CircleTransfrom implements Transformation {
@Override
public Bitmap transform(Bitmap bitmap) {
if (null == bitmap)
return null;
PaintFlagsDrawFilter fliter = new PaintFlagsDrawFilter(0,
Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
int w = bitmap.getWidth();
int h = bitmap.getHeight();
if (w <= 0 || h <= 0) {
return null;
}
int r = (w < h ? w : h) / 2;
Bitmap circle = Bitmap.createBitmap(2 * r, 2 * r,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(circle);
canvas.setDrawFilter(fliter);
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
p.setColor(Color.RED);
canvas.drawCircle(r, r, r, p);
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
// 生成结果图片
Bitmap out = Bitmap.createBitmap(2 * r, 2 * r, Bitmap.Config.ARGB_8888);
Canvas outCan = new Canvas(out);
outCan.setDrawFilter(fliter);
outCan.drawBitmap(bitmap, 0, 0, null);
outCan.drawBitmap(circle, 0, 0, p);
circle.recycle();
bitmap.recycle();
return out;
}
@Override
public String key() {
return null;
}
}