在上一节中将到将若干张图片拼接成为一张图片。但是这种简单的操作往往不能满足实际的需求,有时我们会需要给图片添加上个性化的边框,来更好的展示图片。

下面就讲一下在图片拼接后如何给bitmap添加边框。

操作步骤和上一篇差不多,不过区别是上章操作的是bitmap,而这一章通过操作canvas来间接操作bitmap。

效果图如下:

操作步骤如下:

  1.获取Canvas裁剪界限:

Rect rect = canvas.getClipBounds();

  2.创建画笔,设置画笔颜色和画笔样式,并设置边框宽度

Paint paint = new Paint();
//设置边框颜色
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
//设置边框宽度
paint.setStrokeWidth(20);

  3.绘制Canvas区域大小的边框

canvas.drawRect(rect, paint);

  4.结束。呵呵,

具体的代码如下:

1.设置Bitmap边框的方法

/**
* 给bitmap设置边框
* @param canvas
*/
private void setBitmapBorder(Canvas canvas){
Rect rect = canvas.getClipBounds();
Paint paint = new Paint();
//设置边框颜色
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
//设置边框宽度
paint.setStrokeWidth(20);
canvas.drawRect(rect, paint);
}

2.调用该方法绘制边框

  

/**
* 拼接图片
* @param bit1
* @param bit2
* @return 返回拼接后的Bitmap
*/
private Bitmap newBitmap(Bitmap bit1,Bitmap bit2){
int width = bit1.getWidth();
int height = bit1.getHeight() + bit2.getHeight();
//创建一个空的Bitmap(内存区域),宽度等于第一张图片的宽度,高度等于两张图片高度总和
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//将bitmap放置到绘制区域,并将要拼接的图片绘制到指定内存区域
Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(bit1, 0, 0, null);
canvas.drawBitmap(bit2, 0, bit1.getHeight(), null);
//将canvas传递进去并设置其边框
setBitmapBorder(canvas);
return bitmap;
}

注意:setBitmapBorder(Canvas canvs)方法传递的这个canvas必须是你创建内存区域的那个canvas也就是Canvas canvas = new Canvas(bitmap);.只有传入这个canvas才会绘制bitmap的边框,如果传递的是onDraw方法的canvas则绘制的是整个View的边框。

Android给拼接好的Bitmap加上个性化边框的更多相关文章

  1. Android 将拼接好并加上边框的图片保存到内存卡中

    通过前两篇文章,问们学会了怎样拼接图片.给拼接好的图片加上边框样式,但这还不够,忙活了大半天 终于拼接好并给图片美化了,但是程序一旦推出,之前做的工作都白费了.这时我们会想,能不能把拼接好的图片保存起 ...

  2. Android开发优化之——对Bitmap的内存优化

    http://blog.csdn.net/arui319/article/details/7953690 在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitm ...

  3. Android有效的治疗方法Bitmap,减少内存

    Android有效的治疗方法Bitmap,减少内存 照片可能有不同的大小. 在很多情况下,大小.比如,我们的Camera应用,我们所拍的照片的大小远大于屏幕显示的大小 假如你的应用被限制了内存使用,显 ...

  4. android 在HTML中显示bitmap

    逻辑:将bitmap转化为Base64,通过调用HTML中的JS,显示到HTML中 (1)android代码 public String bitmaptoString(Bitmap bitmap) { ...

  5. Android 一条竖线或横线、画边框

    Android 一条竖线或横线.画边框 博客分类: android androidshape  1.画线 [img] http://pic002.cnblogs.com/images/2010/122 ...

  6. Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget(转)

    昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bit ...

  7. Android菜鸟成长记15 -- BitMap

    BitMap简介 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bi ...

  8. Android学习之——图形图像处理(Bitmap、BitmapFactory)(一)

    转载自http://blog.csdn.net/csxwc/article/details/10345235 Bitmap是Android系统中的图像处理的最重要的类之一.用它可以获取图像文件信息,对 ...

  9. 解析Android开发优化之:对Bitmap的内存优化详解

    在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常.所以,对于图 ...

随机推荐

  1. SpringMVC+Spring+MyBatis 整合与图片上传简单示例

    一.思路: (一) Dao层: 1. SqlMapConfig.xml,空文件即可.需要文件头.2. applicationContext_dao.xml. a) 数据库连接池b) SqlSessio ...

  2. amazeui+canvas绘制二维码

    <link rel="stylesheet" type="text/css" href="css/amazeui.min.css"/& ...

  3. 关于子元素的margin-top溢出和元素浮动对父元素高度影响解决方案

    以下是个人学习笔记,仅供学习参考. 1.关于子元素的margin-top作用在无margin-top-border的父元素上导致子元素的margin-top溢出问题. 在给没有margin-top-b ...

  4. C# Newtonsoft.Json反序列化为dynamic对象之后的使用

    通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...

  5. Oracle 修改SYS、system用户密码

    Oracle 修改SYS.system用户密码 by:授客 QQ:1033553122 概念 SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户.在数据库安装完之后,应 ...

  6. Lodash学习笔记

    有多年开发经验的工程师,往往都会有自己的一套工具库,称为utils.helpers等等,这套库一方面是自己的技术积累,另一方面也是对某项技术的扩展,领先于技术规范的制订和实现. Lodash就是这样的 ...

  7. CSS 小结笔记之em

    1.为什么使用em em也是css中的一种单位,和px类似.很多人会疑惑为什么有了px之后还要使用em,而且em使用起来相对于px来讲比较麻烦. em主要是应用于弹性布局,下面给出一个小栗子说明em的 ...

  8. qtcreator minggw 支持c++11

    pro文件添加 QMAKE_CXXFLAGS += -std=c++11

  9. python 使用else代替状态变量

    翻看公司的代码文档,在代码风格文档中,写着:为了提高代码的可维护性,代码中减少flag这类状态变量的使用.这个问题,平时确实没有想过,面对这种需求时,第一反应就是使用flag标记状态.那么使用什么样的 ...

  10. alpha阶段 代码结构及技术难点简介

    我们的产品是安卓端app,所以目前主要就是用Android Studio来进行代码开发. Android Studio的项目的结构还是比较清晰的,如下图,主要就是java文件夹内的代码部分(.java ...