Android 将一张图片变为圆形图片
来源:互联网 发布:淘宝被投诉未生产 编辑:程序博客网 时间:2024/04/29 08:23
前度时间做的一个项目中有这样的需求,把网络请求下来的图片变为圆形图片显示在客服端。开始想了很久,都没找到好的解决方案,最后还是通过Bitmap.createBitmap方法解决的。具体实现如下:
将图片转换为圆形图片,输入需要一个Bitmap的对象
/** * 转换图片成圆形 * * @param bitmap * 传入Bitmap对象 * @return */ public static Bitmap toRoundBitmap(Bitmap bitmap) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); float roundPx; float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom; if (width <= height) { roundPx = width / 2; left = 0; top = 0; right = width; bottom = width; height = width; dst_left = 0; dst_top = 0; dst_right = width; dst_bottom = width; } else { roundPx = height / 2; float clip = (width - height) / 2; left = clip; right = width - clip; top = 0; bottom = height; width = height; dst_left = 0; dst_top = 0; dst_right = height; dst_bottom = height; } Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom); final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom); new RectF(dst); paint.setAntiAlias(true);// 设置画笔无锯齿 canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas paint.setColor(color); canvas.drawCircle(roundPx, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452 canvas.drawBitmap(bitmap, src, dst, paint); // 以Mode.SRC_IN模式合并bitmap和已经draw了的Circle return output; }
将drawable中的图片转为Bitmap对象
/** * drawable2Bitmap * * @param bitmap * 传入Drawable对象 * @return */ @SuppressWarnings("deprecation") public static Bitmap drawable2Bitmap(int a ,Context context) { Resources resources = context.getResources(); Drawable drawable = resources.getDrawable(a); if (drawable instanceof BitmapDrawable) { return ((BitmapDrawable) drawable).getBitmap(); } else if (drawable instanceof NinePatchDrawable) { Bitmap bitmap = Bitmap .createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } else { return null; } }
图片旋转
/**
* rotateImage
*
* @param id
* 传入derawable id
* @return bitmap
*/
public Bitmap rotateImage(int id,Context context,float rotate){ Bitmap bitmap = ((BitmapDrawable) context.getResources().getDrawable(id)).getBitmap(); Matrix matrix = new Matrix(); matrix.setRotate(rotate); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); return bitmap;}
0 0
- Android 将一张图片变为圆形图片
- Android将图片打成圆形
- android将图片转换为圆形图片
- Android如何将一张图片裁成圆形/圆角矩形/特殊形状
- 安卓 java方法将一张图片切成圆形
- android 将图片变为圆角
- android 将图片处理为圆形
- 将图片切成圆形
- android之将图片转化为圆形图片
- android之将图片转化为圆形图片
- Photoshop制作Android UI: 如何将图片背景变为透明
- Photoshop制作Android UI: 如何将图片背景变为透明
- android中如何将图片变为圆角
- 鼠标移动到一张图片时变为另一张图片
- Android分享一张图片
- Android自定义圆形图片
- Android自定义圆形图片
- Android 圆形图片 CircleImageView
- Android自定义控件
- envsetup.sh与mm命令、mmm命令说明
- sql server 清除系统错误日志,消息队列产生大量日志
- id & instancetype
- 关于WeiPHP
- Android 将一张图片变为圆形图片
- hiho 1269 优化延迟 二分 优先队列
- AVPlayer实现视频播放功能
- CSS中!important的使用
- Android开源组件加载网络图片的优缺点比较
- 前端冷知识
- 2016-3-7Q&A
- PhantomJS入门
- Android drawable in xml study