前度时间做的一个项目中有这样的需求,把网络请求下来的图片变为圆形图片显示在客服端。开始想了很久,都没找到好的解决方案,最后还是通过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;

}

android jpeg图片变圆,Android 将一张图片变为圆形图片相关推荐

  1. axure中怎么把图片变圆_Axure 给Image部件设置本地图片

    目的:通过任意选择本地图片,给Image设置图片,显示在image部件上. 效果: 实现步骤: Step1:先设置需要的部件 (1)拖入text field部件,命名为:选择图片,设置类型为file ...

  2. Android 更改纯色背景图片颜色,可实现一张背景圆形图片展示不同颜色

    Android 更改纯色背景图片颜色,可实现一张背景圆形图片展示不同颜色 项目中可能会遇到比如多个纯色圆形背景列表或者说纯色圆形头像背景,一般让UI设计师设计多张背景图:但是有更好的方法只需一张图就可 ...

  3. android 图片转换圆形 黑色背景,Android 更改纯色背景图片颜色,可实现一张背景圆形图片展示不同颜色...

    Android 更改纯色背景图片颜色,可实现一张背景圆形图片展示不同颜色 项目中可能会遇到比如多个纯色圆形背景列表或者说纯色圆形头像背景,一般让UI设计师设计多张背景图:但是有更好的方法只需一张图就可 ...

  4. Android自定义View之圆弧形进度条,支持背景图片设置

    Android下自定义的一款圆弧形进度条,支持中心图片设置,有兴趣的朋友可以尝试下. Github地址点击打开链接 package com.julyapp.progressdemo.view;impo ...

  5. 在Android中如何使用clipPath()方法实现简单的裁剪圆形图片

    裁剪圆形图片的方式有很多,这篇文章主要为大家介绍如何使用clipPath()方法裁剪圆形图片. 首先,我们先看效果图: 裁剪前: 裁剪后: 接下来,我们来一步一步的实现. 1.新建一个module 2 ...

  6. android百度地图画圆,Android应用开发之android 百度地图自定义圆,更改默认图标等常用方法...

    本文将带你了解Android应用开发android 百度地图自定义圆,更改默认图标等常用方法,希望本文对大家学Android有所帮助. 总结了一下百度地图常用的方法(前提是集成百度地图环境成功): 1 ...

  7. android百度地图画圆,android百度地图半径画圆

    Java代码 import android.content.Context; import android.graphics.Canvas; import android.graphics.Color ...

  8. axure中怎么把图片变圆_orcad中怎么创建带图片的Title Block?

    一般来说,Title Block都是调用系统本身自带的,或者是修改自带的文件,所以这里我们直接复制一个系统自带的Title Block,修改后保存在路径下,进行关联即可. 第一步,从系统自带的模板Ca ...

  9. vba 压缩图片_1分钟批量处理100张图片,Word图片批量压缩/提取/居中统统搞定

    天下苦Word久矣!Word不仅是个码字工具,还是个排版工具,而Word在排版方面经常遇到的问题,恐怕说个三天三夜都说不完! 好不容易做完了100页的活动方案,交到处女座上司那里,他告诉我:" ...

  10. html5圆形图片轮播,jQuery超酷响应式圆形图片轮播图特效

    mislider是一款效果非常酷的jQuery响应式圆形图片轮播图特效插件.该轮播图特效可以将图片以圆形图片显示,然后使图片无限循环形成轮播图或旋转木马特效.该轮播图插件的特点有: 使用简单 在同一个 ...

最新文章

  1. AI近10年21个子领域高引学者(AI-10 Most Influential Scholars )
  2. 2022秋招算法岗卷成人间地狱!高薪惹眼,招录比100:1
  3. Silverlight 控件的验证
  4. 6.1 Tensorflow笔记(基础篇):队列与线程
  5. python逐行读取文件内容的三种方法
  6. DATA URI schema(data:base64)协议常用数据格式
  7. 容器技术Docker K8s 14 容器服务ACK基础与进阶-容器网络管理
  8. 机器学习实战:支持向量机回归预测财政收入
  9. 如何自己编写一个交通仿真软件(一)火种
  10. 各种显示接口DBI、DPI、LTDC、DSI、FSMC
  11. 不值一提?开源CRM是否值得应用
  12. thinkphp6如何部署在虚拟主机上?
  13. stata生成脉冲响应图怎么导出_Stata:面板VAR模型(pvar2命令)
  14. 十位数和个位数交换python_Python3实现个位数字和十位数字对调, 其乘积不变
  15. springboot设置运行内存_spring boot应用优化,6s内启动,内存减半
  16. 低轨卫星传播特性仿真与分析
  17. 《算法和数据结构》LeetCode 篇
  18. 2.5趣味数学之猜牌术
  19. 理想中的接口自动化项目
  20. 【JAVA秘籍心法篇-Spring】Spring XML解析源码详解

热门文章

  1. java 短连接转长连接_HTTP的长连接和短连接转换接口(API)
  2. flume系列之:清理HDFS上的tmp文件,把.gz.tmp文件变为.gz文件
  3. 腾讯中层裁员10%,互联网资本进入寒流时代
  4. Nginx-代理服务器
  5. android_x86安装arm转译
  6. 第八章:贪心+二分 题目::Aggressive cows
  7. Word文档标题自动增加序号
  8. AI算力基础 -- TPU1.0
  9. 打印图形输出三角形 *
  10. android app隐藏图标不见了,Android 10如何隐藏应用图标