博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android图像处理系列之五-- 给图片添加边框(中)
阅读量:4957 次
发布时间:2019-06-12

本文共 1603 字,大约阅读时间需要 5 分钟。

前面一篇讲到给图片加边框的方式,只能给图片加一些有规则的边框,如果想加一些比较精美的效果,就有点麻烦了。下面就给出解决这个问题的思路。

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

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

   
+   
 

代码:

这里的res是边框图片,还是一样,不建议放到drawable下面,最后是放到assets目录,原因就不用说了吧

 

[java]
  1. /** 
  2.  * 添加边框 
  3.  * @param bm 原图片 
  4.  * @param res 边框资源 
  5.  * @return 
  6.  */  
  7. private Bitmap addBigFrame(Bitmap bm, int res)  
  8. {  
  9.     Bitmap bitmap = decodeBitmap(res);  
  10.     Drawable[] array = new Drawable[2];  
  11.     array[0] = new BitmapDrawable(bm);  
  12.     Bitmap b = resize(bitmap, bm.getWidth(), bm.getHeight());  
  13.     array[1] = new BitmapDrawable(b);  
  14.     LayerDrawable layer = new LayerDrawable(array);  
  15.     return drawableToBitmap(layer);  
  16. }  
  17.   
  18. /** 
  19.  * 将Drawable转换成Bitmap 
  20.  * @param drawable 
  21.  * @return 
  22.  */  
  23. private Bitmap drawableToBitmap(Drawable drawable)  
  24. {  
  25.     Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);  
  26.     Canvas canvas = new Canvas(bitmap);  
  27.     // canvas.setBitmap(bitmap);  
  28.     drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
  29.     drawable.draw(canvas);  
  30.     return bitmap;  
  31. }  
  32.   
  33. /** 
  34.  * 将R.drawable.*转换成Bitmap 
  35.  * @param res 
  36.  * @return 
  37.  */  
  38. private Bitmap decodeBitmap(int res)  
  39. {  
  40.     return BitmapFactory.decodeResource(mContext.getResources(), res);  
  41. }  

 

转载于:https://www.cnblogs.com/Free-Thinker/p/6722580.html

你可能感兴趣的文章
MYSQL数据库的导出的几种方法
查看>>
SQL Server-5种常见的约束
查看>>
硬件之美
查看>>
[转载]java开发中的23种设计模式
查看>>
表格的拖拽功能
查看>>
函数的形参和实参
查看>>
文字过长 用 ... 表示 CSS实现单行、多行文本溢出显示省略号
查看>>
1Caesar加密
查看>>
【TP SRM 703 div2 500】 GCDGraph
查看>>
MapReduce 重要组件——Recordreader组件 [转]
查看>>
webdriver api
查看>>
apache 实现图标缓存客户端
查看>>
MediaWiki左侧导航栏通过特殊页面就可以设置。
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>
linux系统的远程控制方法——学神IT教育
查看>>
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
hdfs 命令使用
查看>>