android图像处理系列之五--给图片添加边框(中)
2023-09-11 14:17:58 时间
前面一篇讲到给图片加边框的方式,只能给图片加一些有规则的边框,如果想加一些比较精美的效果,就有点麻烦了。下面就给出解决这个问题的思路。
思路是:一些比较精美的花边图片我们是很难用代码控制,就目前本人水平是达不到,不排除牛人,再说了PS那些效果都是程序员做出来,肯定有实现的方法,这可能就要涉及很复杂的图形学。扯远了,接来说怎么用那些精美的花边做为图片的边框。简单的方式是用两张图片叠加。最简单的一种是本文介绍的,用透明的PNG格式图片。因为Android是支持PNG图片处理的,而且PNG图片有透明度值,所以,添加那些花边边框可以先把图片做成全透明的(美工做图片的时候可以先创建一张全透明图片,再往图片上添加花边。),然后再叠加上去就OK了。要注意的是,边框有大小,最好是大一点,如果要处理的图片比较大,可以先将缩放到一定比例,再添加边框;如果边框比图片大,先要对边框进行缩放,具体缩放见前面的android图像处理系列之二--图片旋转、缩放、反转,这里面就不贴代码了。
废话少说,下面看效果图:(截图的时候图片大小不一样,比较丑)
+
=
代码:
这里的res是边框图片,还是一样,不建议放到drawable下面,最后是放到assets目录,原因就不用说了吧
- /**
- * 添加边框
- * @param bm 原图片
- * @param res 边框资源
- * @return
- */
- private Bitmap addBigFrame(Bitmap bm, int res)
- {
- Bitmap bitmap = decodeBitmap(res);
- Drawable[] array = new Drawable[2];
- array[0] = new BitmapDrawable(bm);
- Bitmap b = resize(bitmap, bm.getWidth(), bm.getHeight());
- array[1] = new BitmapDrawable(b);
- LayerDrawable layer = new LayerDrawable(array);
- return drawableToBitmap(layer);
- }
- /**
- * 将Drawable转换成Bitmap
- * @param drawable
- * @return
- */
- private Bitmap drawableToBitmap(Drawable drawable)
- {
- Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
- Canvas canvas = new Canvas(bitmap);
- // canvas.setBitmap(bitmap);
- drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
- drawable.draw(canvas);
- return bitmap;
- }
- /**
- * 将R.drawable.*转换成Bitmap
- * @param res
- * @return
- */
- private Bitmap decodeBitmap(int res)
- {
- return BitmapFactory.decodeResource(mContext.getResources(), res);
- }
相关文章
- Android系统自带的android.util.Base64的实现源码
- 在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)
- 某Android大厂面试100题,涵盖测试技术、环境搭建、人力资源......【速度领取】
- Android USB转串口开发(hoho.android.usbserial串口库)
- Android Scroller详解
- Android中的自定义注解(反射实现-运行时注解)
- android:Android中用文件初始化sqlite数据库
- Android图像处理之冰冻效果
- android图像处理(3) 底片效果
- android图像处理系列之五-- 给图片添加边框(中)
- android图像处理系列之三-- 图片色调饱和度、色相、亮度处理
- android图像处理系列之六--给图片添加边框(下)-图片叠加
- android图像处理系列之七--图片涂鸦,水印-图片叠加
- Android用悬浮按钮实现翻页效果
- Android 中文API (68) —— BluetoothClass.Service
- Android保存图片到系统图库
- android开发:Android 中自定义View的应用
- Android/IOS 微信及浏览器(h5)中唤起本地APP,唤起浮层,然后用外部浏览器打开唤起某本地APP
- Android编程 EditView 中如何设置最多可以输入的字符数量 属性 android:ems 与 android:maxLength 的区别
- Android开发学习之Camera
- 【Android】程序设计 ——记账App项目android移动端的实现
- Android adb shell学习心得(四)
- Android blueZ HCI(一个):hciconfig实施和经常使用
- 教我兄弟学Android逆向10 静态分析反调试apk
- 关于OKHTTP和RX及其他三方包冲突的问题,Error: Program type already present: rx.android.BuildConfig