android 图片置顶,[置顶] android 一种图片边框的解决办法

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

主要的实现方法有:

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个小图片组成的了。。。

cdca6d62dcafa1d2c8162d28951f230c.png

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

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

a04a908ced6a9121eee4d136b12ae228.png

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

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

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

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

b6441e74b83f4d82e7261c1f4880dce6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值