现在的位置: 首页 > 移动开发 > 正文

android 一种图片边框的解决办法

2019年09月13日 移动开发 ⁄ 共 1167字 ⁄ 字号 评论关闭

原来做图片处理的时候,有个功能是需要给图片添加边框的功能,看了看美图秀秀和百度魔图的处理办法。。。

主要的实现方法有:

1  、做成一张大图片,覆盖在原来的图片上

2 、一个配置文件和多张图片打成一个zip包,要用的时候需要解压

对于方案一:边框资源的图片需要拉伸,导致边框看起来也被拉伸

对于方案二:需要解压,解压出来后就有多个文件了(如一个配置文件,8个小细节的边框元素图片文件,共9个),万一删除掉了哪一个文件,就可能出错了(除非你每次都是检查一次)

鉴于1和2的缺陷,自己定义了一套TLV格式的边框文件,该方法的优点是文件结构简单,文件体积减小,处理方法简单,扩展性好,也就是方法三了:

3、将图片的配置文件,图片边框元素图片文件打在一个文件里(为了节省空间,将所有的边框元素图片让UI工程师PS在一张图片里即可),用的时候直接按照TLV 格式文件读取即可

config文件数据如下:

{"type":8001,"elements":[{"name":"leftTop","x":0,"y":0,"w":64,"h":64},{"name":"top","x":64,"y":0,"w":64,"h":64},{"name":"rightTop","x":128,"y":0,"w":64,"h":64},{"name":"left","x":192,"y":0,"w":64,"h":64},{"name":"right","x":256,"y":0,"w":64,"h":64},{"name":"leftBottom","x":320,"y":0,"w":64,"h":64},{"name":"bottom","x":384,"y":0,"w":64,"h":64},{"name":"rightBottom","x":448,"y":0,"w":64,"h":64}]}

bitmap数据如下:

看看下图,一看便知道是是8个小图片组成的了。。。

bitmap文件就是8个边框元素图片连接起来的图片了,config文件则描述了每个边框元素图片的起始位置,宽度和高度

这里的边框元素图片概念是指下图的ABCDEFGH8个点处的小图片

现在到了将一个图片(暂且叫A)添加边框的时候了,怎么处理呢,先在图片A的左上角,右上角,左下角,右下角依次绘制ACFH元素图片

现在需要在A和C直接绘制B图片了,是直接拉伸吗?NO,需要先算出A和C之间的距离(假设为Dx),则Dx/B元素的宽度,再进行四舍五入,看看需要多少个B图片(假设为N),将N个B图片组成一张图片M,然后将M图片的长度拉伸成AC间的距离。这种处理的办法是:为了使AC之间的部分恰好能容下图片M,使AC部分看起来是连贯的。。。

同理,BDEG的处理方法类似了。

下面举个例子,原图与添加边框后的效果如下:

抱歉!评论已关闭.