圆角头像的实现

2024-06-04 10:08
文章标签 实现 圆角 头像

本文主要是介绍圆角头像的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Activity中调用
[java]  view plain copy
  1. /* 将头像转为圆形 */  
  2.    Resources res = getResources();  
  3.    Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.head);  
  4.    head.setImageBitmap(ImageHelper.toRoundBitmap(bmp));  



[java]  view plain copy
  1. //处理类  
  2. public class ImageHelper {  
  3.     /** 
  4.      * 转换图片成圆形 
  5.      * @param bitmap 传入Bitmap对象 
  6.      * @return 
  7.      */  
  8.     public static Bitmap toRoundBitmap(Bitmap bitmap) {  
  9.             int width = bitmap.getWidth();  
  10.             int height = bitmap.getHeight();  
  11.             float roundPx;  
  12.             float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;  
  13.             if (width <= height) {  
  14.                     roundPx = width / 2;  
  15.                     top = 0;  
  16.                     bottom = width;  
  17.                     left = 0;  
  18.                     right = width;  
  19.                     height = width;  
  20.                     dst_left = 0;  
  21.                     dst_top = 0;  
  22.                     dst_right = width;  
  23.                     dst_bottom = width;  
  24.             } else {  
  25.                     roundPx = height / 2;  
  26.                     float clip = (width - height) / 2;  
  27.                     left = clip;  
  28.                     right = width - clip;  
  29.                     top = 0;  
  30.                     bottom = height;  
  31.                     width = height;  
  32.                     dst_left = 0;  
  33.                     dst_top = 0;  
  34.                     dst_right = height;  
  35.                     dst_bottom = height;  
  36.             }  
  37.               
  38.             Bitmap output = Bitmap. createBitmap(width,  
  39.                             height, Config. ARGB_8888);  
  40.             Canvas canvas = new Canvas(output);  
  41.               
  42.             final int color = 0xff424242;  
  43.             final Paint paint = new Paint();  
  44.             final Rect src = new Rect((int)left, ( int)top, (int)right, (int)bottom);  
  45.             final Rect dst = new Rect((int)dst_left, ( int)dst_top, (int)dst_right, (int)dst_bottom);  
  46.             final RectF rectF = new RectF(dst);  
  47.   
  48.             paint.setAntiAlias( true);  
  49.               
  50.             canvas.drawARGB(0000);  
  51.             paint.setColor(color);  
  52.             canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
  53.   
  54.             paint.setXfermode( new PorterDuffXfermode(Mode.SRC_IN));  
  55.             canvas.drawBitmap(bitmap, src, dst, paint);  
  56.             return output;  
  57.     }  
  58.      
  59.     // 下载图片转为bitmap  
  60.     public static Bitmap getHttpBitmap(String url) {  
  61.       URL u = null;  
  62.       Bitmap bmp = null;  
  63.        try {  
  64.           u = new URL(url);  
  65.   
  66.       } catch (Exception e) {  
  67.           // TODO: handle exception  
  68.       }  
  69.        try {  
  70.           HttpURLConnection conn = (HttpURLConnection) u.openConnection();  
  71.           conn.setConnectTimeout(0);  
  72.           conn.setDoInput( true);  
  73.           conn.connect();  
  74.           InputStream ins = conn.getInputStream();  
  75.           bmp = BitmapFactory. decodeStream(ins);  
  76.           ins.close();  
  77.       } catch (Exception e) {  
  78.           // TODO: handle exception  
  79.       }  
  80.        return bmp;  
  81.     }  
  82. }  

这篇关于圆角头像的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029776

相关文章

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换