Android -- 图片编辑:创建圆角图片

创建圆角图片的方式大同小异,最简单的就是 9.png 美工做出来的就是,这样的最省事直接设置即可。

第二种就是通过裁剪

这里的剪裁指的是根据原图我们自己生成一张新的bitmap,这个时候指定图片的目标区域为一个圆角局域。这种做法有一点需要生成一个新的bitmap,所以会消耗至少2倍的图片内存,

下面分析一下代码的含义:

a.首先创建一个指定高宽的bitmap,作为输出的内容,

b.然后创建一个相同大小的矩形,利用画布绘制时指定圆角角度,这样画布上就有了一个圆角矩形。

c.最后就是设置画笔的剪裁方式为Mode.SRC_IN,将原图叠加到画布上,

这样输出的bitmap就是原图在矩形局域内的内容。

/**
	  * 图片圆角
	  * @param bitmap
	  * @return
	  */
	 public static Bitmap getRoundedCornerBitmap(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());
	     final RectF rectF = new RectF(rect);
	     final float roundPx = 12;

	     paint.setAntiAlias(true);
	     canvas.drawARGB(0, 0, 0, 0);
	     paint.setColor(color);
	     canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

	     paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
	     canvas.drawBitmap(bitmap, rect, rect, paint);
	     bitmap.recycle();
	     return output;
	 }

那第三种呢就是利用BitmapShader

int widthLimit = 96;
		int heightLimit = 96;
		Bitmap bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(context.getResources(), imageId), 96,96, false);

		BitmapShader shader;
		shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);

		Paint paint = new Paint();
		paint.setAntiAlias(true);
		paint.setShader(shader);

		RectF rect = new RectF(0.0f, 0.0f, widthLimit, heightLimit);

		// rect contains the bounds of the shape
		// radius is the radius in pixels of the rounded corners
		// paint contains the shader that will texture the shape
		Bitmap output = Bitmap.createBitmap(widthLimit,
		         heightLimit, Bitmap.Config.ARGB_8888);
		Canvas canvas = new Canvas(output);
		canvas.drawRoundRect(rect, 12, 12, paint);

		//drawable = context.getResources().getDrawable(imageId);
		//drawable = new BitmapDrawable(ImageUtil.drawImageDropShadow(tmp));
		// Log.i(TAG, "======>>>>>> "+context.getPackageName() + " imageId:" + imageId);
		// drawable = new BitmapDrawable(BitmapFactory.decodeResource(context.getResources(), imageId));
		drawable = new BitmapDrawable(output);
		bitmap.recycle();

Android -- 图片编辑:创建圆角图片,布布扣,bubuko.com

时间: 2024-08-04 22:19:17

Android -- 图片编辑:创建圆角图片的相关文章

Android 圆形、圆角图片ImageView

圆形.圆角图片ImageView 当时做这个功能的时候也是从网上找的.比较好用的demo 作者以及详细解释请见:Android BitmapShader 实战 实现圆形.圆角图片 在这里主要讲一下如何使用 1.把RoundImageView导入包下 2.在xml中配置 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a

Android Xfermode 真实 实现全面、圆角图片

转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/42094215.本文出自:[张鸿洋的博客] 1.概述 事实上这篇本来准备Android BitmapShader 实战 实现圆形.圆角图片放到一篇里面.结果由于篇幅原因就独立出来了~在非常久曾经也写过一个利用Xfermode 实现圆形.圆角图片的,可是那个继承的是View.事实上继承ImageView能方便点,最起码省去了onMeasure里面自己去策略,以及不须要自己去提供设置

Android Xfermode 实战 实现圆形、圆角图片

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/42094215,本文出自:[张鸿洋的博客] 1.概述 其实这篇本来准备Android BitmapShader 实战 实现圆形.圆角图片放到一篇里面,结果由于篇幅原因就独立出来了~在很久以前也写过一个利用Xfermode 实现圆形.圆角图片的,但是那个继承的是View,其实继承ImageView能方便点,最起码省去了onMeasure里面自己去策略,以及不需要自己去提供设置图片的

Android 两种制作圆形/圆角图片的方法

前言: 目前网上有很多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家. 预备知识: Xfermode介绍: 下面是Android ApiDemo里的"Xfermodes"实例,效果图. Xfermode有三个子类,结构如下: public class Xfermode extends Object java.lang.Object ? a

Android 圆形/圆角图片的方法

Android 圆形/圆角图片的方法 目前网上有很多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家. 预备知识: Xfermode介绍: 下面是Android ApiDemo里的"Xfermodes"实例,效果图. Xfermode有三个子类,结构如下: view sourceprint? 1.public class 2.Xfermod

CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层

效果如下: KMLayerDelegate.h 1 #import <UIKit/UIKit.h> 2 3 @interface KMLayerDelegate : NSObject 4 5 @end KMLayerDelegate.m 1 #import "KMLayerDelegate.h" 2 3 @implementation KMLayerDelegate 4 5 /** 6 * 根据角度,获取对应的弧度 7 * 8 * @param degree 角度 9 *

Android圆角图片和圆形图片实现总结

1. 概述 Android研发中经常会遇见圆角或者圆形图片的展示,但是系统中ImageView并不能直接支持,需要我们自己做一些处理,来实现圆角图片或者圆形图片,自己最近对这块的实现做了一下总结,看一下几种实现方法. 图层叠加,上层覆盖一层蒙版,遮挡图片,让图片展示出圆角或者圆形效果 重新绘制 BitmapShader Xfermode RoundedBitmapDrawable CardView,使用官方控件,自动裁剪,达到圆角或者圆形效果.(5.0以上系统) 第一种方法,很傻,不太优雅,不推

Android圆角图片封装类

你还在为处理圆角而在项目里到处copy 处理代码吗?你还在不停动态生成圆角bitmap后再使用吗?no,代码里不需要知道这些, 如果一个view需要圆角,xml直接使用下面的RoundImageView即可, 代码逻辑根本不需要任何干涉,代码中你依然当做这个是一个普通的ImageView完全没有问题,这就是关键. 而且省去了bitmap的动态生成,避免了内存开销,跟界面卡顿(原始处理圆角的方法,再处理图片比较多的时候,如果不用单独thread性能并不好) 注:如果你想让一个布局you圆角效果也是

android中对Bitmap图片设置任意角为圆角

http://blog.csdn.net/l448288137/article/details/48276681 最近项目开发中使用到了圆角图片,网上找到的圆角图片控件大多比较死板,只可以全圆角.其中感觉最好的也就是半圆角 链接在这里.想了一下,我自己在这个的基础上进行了一点改进,使得图片可以设置任意角为圆角. 先上效果图: 核心代码 [java] view plain copy package fillet.sgn.com.filletimage; import android.graphic