private Bitmap getCenterCropBitmap(int fillColor,int roundWidth,int roundHeight, Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(roundWidth, roundHeight, Bitmap.Config.ARGB_8888);
Canvas canvas =new Canvas(output);
RectF outerRect =new RectF(0,0, roundWidth, roundHeight);
Paint paint =new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(fillColor);
paint.setStyle(Paint.Style.FILL);
canvas.drawRoundRect(outerRect,0,0, paint);
int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();
float oldsc = roundWidth / (float) roundHeight;
float newsc = bitmapWidth / (float) bitmapHeight;
if (oldsc > newsc) {
int newHei = roundHeight;
int newWid = newHei * bitmapWidth / bitmapHeight;
Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei,true);
if (newBit !=null) {
canvas.drawBitmap(newBit, (roundWidth - newWid) /2,0, paint);
}
}else if (oldsc < newsc) {
int newWid = roundWidth;
int newHei = newWid * bitmapHeight / bitmapWidth;
Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei,true);
if (newBit !=null) {
canvas.drawBitmap(newBit,0, (roundHeight - newHei) /2, paint);
}
}else {
int newWid = roundWidth;
int newHei = newWid;
Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei,true);
if (newBit !=null) {
canvas.drawBitmap(newBit,0,0, paint);
}
}
canvas.save();
canvas.restore();
return output;
}
给bitmap添加一个背景,实现centerCrop效果
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 素材 圆角处理 public static Bitmap getRoundedCornerBitmap(Bitma...
- Paint类 setAlpha(int a) 透明度 setColor(int color)设置颜色值 setAn...
- Android 中自定义软键盘 \ \ \ 图一为搜狗输入法、图二为自定义密码键盘、图三为自定义密码键盘 java...