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...