直接上代码吧,如果需要拍照或者从相册中选择图片的功能,推荐一个开源库,用起来很方便

http://www.jianshu.com/p/35ce3b82773e

//裁剪图片的第三方库http://www.jianshu.com/p/35ce3b82773e

compile 'com.linchaolong.android:imagepicker:1.5'

这个库可以设置裁剪时的框是圆形的,但是获取的图片仍然是方形的,因此在裁剪后仍然需要对获取到的照片进行处理,以下为部分用到的核心方法

/**

* @param bitmap src图片

* @return

*/

public static Bitmap getCircleBitmap(Bitmap bitmap) {

Bitmap output = Bitmap.createBitmap( bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas( output);

final int color = 0xff424242;

final Paint paint = new Paint();

final Rect rect = new Rect( 0, 0, bitmap.getWidth(), bitmap.getHeight());

paint.setAntiAlias( true);

paint.setFilterBitmap( true);

paint.setDither( true);

canvas.drawARGB( 0, 0, 0, 0);

paint.setColor( color);

//在画布上绘制一个圆

canvas.drawCircle( bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint);

paint.setXfermode( new PorterDuffXfermode( Mode.SRC_IN));

canvas.drawBitmap( bitmap, rect, rect, paint);

return output;

}

上面方面获取到的bitmap看上去像素并不高,可以尝试使用下面的这种方法

==============================================================

//另一种方式=====================

public Bitmap drawCircleView02(Bitmap bitmap){

//前面同上,绘制图像分别需要bitmap,canvas,paint对象

bitmap = Bitmap.createScaledBitmap(bitmap, 128, 128, true);//==========创建的图片的长宽为128

Bitmap bm = Bitmap.createBitmap(128, 128, Bitmap.Config.ARGB_8888);//此处的长宽应该与上一行保持一致

Canvas canvas = new Canvas(bm);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

//这里需要先画出一个圆

canvas.drawCircle(64, 64, 64, paint);//===========此处应该为上面长宽的一半

//圆画好之后将画笔重置一下

paint.reset();

//设置图像合成模式,该模式为只在源图像和目标图像相交的地方绘制源图像

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

canvas.drawBitmap(bitmap, 0, 0, paint);

return bm;

}

//根据URI获取bitmap对象

private Bitmap getBitmapFromUri(Uri uri) {

try {

// 读取uri所在的图片

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);

return bitmap;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

//将bitmap保存成文件

public void saveBitmap(String bitName, Bitmap mBitmap) {

File f = new File(bitName);

try {

f.createNewFile();

} catch (IOException e) {

}

FileOutputStream fOut = null;

try {

fOut = new FileOutputStream(f);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

//此处注意,保存格式必须设置为png,文件后缀可以是jpg,但是格式必须是PNG,否则会出现黑色背景

mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);

try {

fOut.flush();

} catch (IOException e) {

e.printStackTrace();

}

try {

fOut.close();

} catch (IOException e) {

e.printStackTrace();

}

}

android 圆形裁剪,Android中将图片裁剪成圆形的方法相关推荐

  1. android 获取drawable 对象,Android 实现将本地资源图片转换成Drawable的方法

    Android 实现将本地资源图片转换成Drawable的方法 发布时间:2020-11-06 16:37:09 来源:亿速云 阅读:255 作者:Leah 这篇文章将为大家详细讲解有关Android ...

  2. Android自定义相机拍照、图片裁剪的实现

    原文:Android自定义相机拍照.图片裁剪的实现 最近项目里面又要加一个拍照搜题的功能,也就是用户对着不会做的题目拍一张照片,将照片的文字使用ocr识别出来,再调用题库搜索接口搜索出来展示给用户,类 ...

  3. 中如何将方形图片转换成圆形图片_【PS】PS中不可不知的实用技巧!你都掌握了吗?...

    今天给大家分享一些在PS中经常用到的实用小技巧,操作简单易上手. 01 拉伸图片人物不变形 在我们在PS里想要拉伸一些图片时,里面的人物往往会跟着一起变形,那么如何改变图片比例的同时,又不影响人物的形 ...

  4. 如何将方形图片磨成圆形图片

    如何将方形图片磨成圆形图片 在开发中经常会有一些需求,比如显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其他的一些形状.但是往往我们手上的图片或者从服务器 获取到的图片都是方形的.这时候就 ...

  5. 微信小程序在一张canvas上把正方形图片绘制成圆形

    因为最近在做分享功能,需要用户的头像在微信小程序中,然后写下其他文字,如何在把正方形图片放到canvas,导成圆角.找了两个参考资料,分别是用.clip()和.clearRect()两种方法 微信小程 ...

  6. 如何用photoshop将方形图片处理成圆形图片

    有很多朋友在使用PPT的时候都会想要将PPT中的图片素材处理成圆形,这样看起来更美观,更大方.可是,却迟迟找不到将图片处理成圆形的方法.今天小编为大家分享如何用photoshop将方形图片处理成圆形图 ...

  7. android百度地图覆盖物异步加载图片,Android 百度地图marker中图片不显示的解决方法(推荐)...

    目的: 根据提供的多个经纬度,显示所在地的marker样式,如下: 问题: 1.发现marker中在线加载的图片无法显示出来: 2.获取多个对象后,却只显示出了一个marker: 以下为官网实现方法: ...

  8. 在WPF中将图片转换成3D图像并可以旋转

    原文:在WPF中将图片转换成3D图像并可以旋转 时光偷走的,永远都是我们眼皮底下看不见的珍贵. https://pan.baidu.com/s/14dk-OU2SR0nxXj2bL4bVpQ 首先先看 ...

  9. 用php画一个蓝底红色的圆_php把图片处理成圆形透明的头像

    如果只是想给图片加一个圆角可以参考下面文章 用到的php gd库函数有 imagecolorat imagesetpixel 首先是把图片处理成圆形的: 原图如下: 处理过之后效果: 注意圆色后面的白 ...

  10. 将矩形图片绘制成圆形图片

    这周的安卓作业要做一个音乐播放器, 而图片那块需要添加音乐的封面, 获取到的封面为矩形图片, 如果要像网易云一样做一个唱片风格的封面需要将矩形图片绘制成圆形图片, 在StackOverflow上查找得 ...

最新文章

  1. 大学计算机课程改革项目,大学计算机课程改革.ppt
  2. 基于网络监听方式的电子邮件实现基础
  3. bnpparibas
  4. hdu 5203(枚举)
  5. git 开源 java_开源中国GIT中Java分类下TOP10项目的活动情况分析
  6. mysql数据备份与恢复_MySQL数据备份与恢复
  7. java 按位置格式化字符串_Java字符串格式化,{}占位符根据名字替换实例
  8. android开发所遇问题集(一)----Mr.Zhang
  9. python如何合并两个字典
  10. python中执行shell命令_python中执行shell命令的几个方法小结-阿里云开发者社区
  11. SpringSecurity系列(一) 初识 Spring Security
  12. std string与线程安全_是std :: regex线程安全吗?
  13. 双系统装完只能u盘启动_U盘启动盘如何安装Win7+Win8双系统史上最详细教程
  14. 线性混合效应模型学习
  15. Unity案例 移动汽车
  16. 可以几分钟快速对接支付宝APP支付和手机网站支付?
  17. oracle存储过程循环输入数据,oracle 存储过程循环插入数据
  18. win7桌面不显示我的计算机名,win7系统桌面没有显示我的电脑图标的操作技巧
  19. 请领取你的免费云电脑:微软Windows实验虚拟机,每天可以免费使用两个小时,上Google搜资料很方便
  20. 【MySQL】事务管理

热门文章

  1. C#输出日志文件——log4net组件
  2. 编写jmeter测试用例_Jmeter性能测试系列-场景用例设计
  3. 印尼飞机失事 60多条人命 如果我们身在其中最后一刻会有什么遗憾
  4. 触动精灵怎么设置虚拟服务器,【图文教程】雷电模拟器如何使用触动精灵?
  5. java毕业设计醋坊定制销售平台Mybatis+系统+数据库+调试部署
  6. 技术人员如何从容转型项目经理?
  7. 华为交换机配置远程wbe管理详解
  8. mysql 自然数集合_Mysql基本操作
  9. ubuntu下出现u盘read-only情况,如何修复?
  10. 华为OD机试题:众数和中位数