Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 728|回复: 0

android图像处理-给图片添加边框

[复制链接]

该用户从未签到

发表于 2012-3-22 14:18:21 | 显示全部楼层 |阅读模式
一些比较精美的花边图片我们是很难用代码控制,就目前本人水平是达不到,不排除牛人,再说了PS那些效果都是程序员做出来,肯定有实现的方法,这可能就要涉及很复杂的图形学。扯远了,接来说怎么用那些精美的花边做为图片的边框。简单的方式是用两张图片叠加。最简单的一种是本文介绍的,用透明的PNG格式图片。因为android是支持PNG图片处理的,而且PNG图片有透明度值,所以,添加那些花边边框可以先把图片做成全透明的(美工做图片的时候可以先创建一张全透明图片,再往图片上添加花边。),然后再叠加上去就OK了。要注意的是,边框有大小,最好是大一点,如果要处理的图片比较大,可以先将缩放到一定比例,再添加边框;如果边框比图片大,先要对边框进行缩放,具体缩放见前面的android图像处理系列之二--图片旋转、缩放、反转,这里面就不贴代码了。

废话少说,下面看效果图:(截图的时候图片大小不一样,比较丑)

    +        =   

代码:
这里的res是边框图片,还是一样,不建议放到drawable下面,最后是放到assets目录,原因就不用说了吧。
    [li]/**[/li][li]     * 添加边框[/li][li]     * @param bm 原图片[/li][li]     * @param res 边框资源[/li][li]     * @return[/li][li]     */[/li][li]    private Bitmap addBigFrame(Bitmap bm, int res)[/li][li]    {[/li][li]        Bitmap bitmap = decodeBitmap(res);[/li][li]        Drawable[] array = new Drawable[2];[/li][li]        array[0] = new BitmapDrawable(bm);[/li][li]        Bitmap b = resize(bitmap, bm.getWidth(), bm.getHeight());[/li][li]        array[1] = new BitmapDrawable(b);[/li][li]        LayerDrawable layer = new LayerDrawable(array);[/li][li]        return drawableToBitmap(layer);[/li][li]    }[/li][li][/li][li]    /**[/li][li]     * 将Drawable转换成Bitmap[/li][li]     * @param drawable[/li][li]     * @return[/li][li]     */[/li][li]    private Bitmap drawableToBitmap(Drawable drawable)[/li][li]    {[/li][li]        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);[/li][li]        Canvas canvas = new Canvas(bitmap);[/li][li]        // canvas.setBitmap(bitmap);[/li][li]        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());[/li][li]        drawable.draw(canvas);[/li][li]        return bitmap;[/li][li]    }
    [/li]

复制代码






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 22:42 , Processed in 0.380412 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表