android图像处理系列之六--给图片添加边框(下)-图片叠加
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式。前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以忽略包的大小,那么可以用前种处理方式,本文讲到的虽然可以减小图片的体积,但处理较复杂,而且本人研究的还不是很成熟。本文就是针对JPG边框处理,但缺点是还不够成熟,仅提供思路。
思路:可以将边框做成JPG图片,没有边框的地方,一般都是中间区域调成特殊颜色,比如黑色。在两张图片叠加的时候,对边框图片做特殊处理,比如是黑色的点过滤掉,改变边框图片像素点的透明度,即可完成前面PNG图片的效果。
下面看效果:
+
=
目前代码处理的还不是很好,非黑色点与黑色点的交界处没有做模糊处理,具体方法后面的文章会讲到。一样的边框图片建议放在assets目录。
下面贴代码:
<pre name="code" class="java">/** * 叠加边框图片有用部分 * @param bmp * @return */ private Bitmap alphaLayer(Bitmap bmp) { int width = bmp.getWidth(); int height = bmp.getHeight(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); // 边框图片 Bitmap overlay = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.black); int w = overlay.getWidth(); int h = overlay.getHeight(); float scaleX = width * 1F / w; float scaleY = height * 1F / h; Matrix matrix = new Matrix(); matrix.postScale(scaleX, scaleY); Bitmap overlayCopy = Bitmap.createBitmap(overlay, 0, 0, w, h, matrix, true); int pixColor = 0; int layColor = 0; int newColor = 0; int pixR = 0; int pixG = 0; int pixB = 0; int pixA = 0; int newR = 0; int newG = 0; int newB = 0; int newA = 0; int layR = 0; int layG = 0; int layB = 0; int layA = 0; float alpha = 0.3F; float alphaR = 0F; float alphaG = 0F; float alphaB = 0F; for (int i = 0; i < width; i++) { for (int k = 0; k < height; k++) { pixColor = bmp.getPixel(i, k); layColor = overlayCopy.getPixel(i, k); // 获取原图片的RGBA值 pixR = Color.red(pixColor); pixG = Color.green(pixColor); pixB = Color.blue(pixColor); pixA = Color.alpha(pixColor); // 获取边框图片的RGBA值 layR = Color.red(layColor); layG = Color.green(layColor); layB = Color.blue(layColor); layA = Color.alpha(layColor); // 颜色与纯黑色相近的点 if (layR < 20 && layG < 20 && layB < 20) { alpha = 1F; } else { alpha = 0.3F; } alphaR = alpha; alphaG = alpha; alphaB = alpha; // 两种颜色叠加 newR = (int) (pixR * alphaR + layR * (1 - alphaR)); newG = (int) (pixG * alphaG + layG * (1 - alphaG)); newB = (int) (pixB * alphaB + layB * (1 - alphaB)); layA = (int) (pixA * alpha + layA * (1 - alpha)); // 值在0~255之间 newR = Math.min(255, Math.max(0, newR)); newG = Math.min(255, Math.max(0, newG)); newB = Math.min(255, Math.max(0, newB)); newA = Math.min(255, Math.max(0, layA)); newColor = Color.argb(newA, newR, newG, newB); bitmap.setPixel(i, k, newColor); } } return bitmap; }
这种方式图片处理比较慢,因为像素点要一个个getPixel(),组成新图片的时候要一个个setPixel()。另外可以用getPixels(),和setPixels()方法,这种处理要快一点,本人对其它类似效果的处理测试了一下,后面处理方式要比前面快3多倍。因为这种图片叠加是对像素点处理,是后面的特效处理系列,因为涉及到图片叠加,所以放到前面来。具体怎么使用,后面也会很快讨论到,读者也可以自己研究。优化的代码会在后面贴出来,敬请期待。
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
![](/assets/blank.gif)
android图像处理系列之六--给图片添加边框(下)-图片叠加相关推荐
- android图像处理系列之六-- 给图片添加边框(下)-图片叠加
前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以 ...
- android 涂鸦之图片叠加,android图像处理系列之七--图片涂鸦,水印-图片叠加...
图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可.前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操 ...
- android图像处理系列之五-- 给图片添加边框(中)
前面一篇讲到给图片加边框的方式,只能给图片加一些有规则的边框,如果想加一些比较精美的效果,就有点麻烦了.下面就给出解决这个问题的思路. 思路是:一些比较精美的花边图片我们是很难用代码控制,就目前本人水 ...
- android图像处理系列之五--给图片添加边框(中)
前面一篇讲到给图片加边框的方式,只能给图片加一些有规则的边框,如果想加一些比较精美的效果,就有点麻烦了.下面就给出解决这个问题的思路. 思路是:一些比较精美的花边图片我们是很难用代码控制,就目前本人水 ...
- 图片添加边框工具:AKVIS ArtSuite for Mac
你也想为你的图片添加各种精美的边框吗?akvis artsuite mac破解版是一款用于装饰照片的工具,可以非常方便的为照片或者图片添加上精美的相框或者边框!程序可独立运行,也可以作为Photosh ...
- speedoffice(PPT)怎么给图片添加边框
PPT怎么给图片添加边框呢?看看小编是怎么操作的吧 首先,用speedoffice打开PPT文件,光标选中需要添加边框的图片,如图: 然后,在右侧工具栏选择"形状设置",并在设置里 ...
- photoshop图片添加边框
经常要给图片添加边框,这里记录一下. 复制图层 打开photoshop窗口,拖进一张jpg图片: 菜单[编辑->描边] 文件[存储->jpg] 即可.
- 图片添加边框和文字怎么弄?图片编辑在线教学
大家平时在拍完照片后,会对它进行一些编辑处理吗?像我每次拍完照,都会对图片进行一些后期处理,有时也会给图片添加一些边框或者文字,美化图片并增加图片信息量.那你们平时都是怎么给图片加上边框和文字的呢 ...
- android 层级边框,有没有一种简单的方法可以在Android视图的顶部和底部添加边框?...
有没有一种简单的方法可以在Android视图的顶部和底部添加边框? 我有一个TextView,我想沿其顶部和底部边框添加黑色边框. 我尝试将android:drawableTop和android:dr ...
最新文章
- 【python】点分十进制ip与数字互转
- 如果常数项没有经过显著性检验_Cg,Cgk 能代替偏倚显著性检验?
- 2019年6月19日Jerry Wang的SAP SAP Cloud Connector练习
- android文件搜索广播,Android 实现无网络传输文件
- 100套高质量的免费 PSD 界面设计素材【系列一】
- android:Read-only file system解决
- C/C++ 基础算法1
- GGally与pairs相关关系图_史上最全(二)
- 山石网科-Hillstone-L2TP-***之配置终结篇
- 【优化调度】基于matlab蚁群算法求解无等待流水线调度优化问题【含Matlab源码 1516期】
- UTM(Undergraduate Texts in Mathematics)书单 |附下载链接
- 三因素三水平正交表l9_正交试验在减水剂中的应用
- matlab 纵坐标变为百分比形势,“怎么把excel纵坐标改为百分数类型“excel中如何求百分比...
- python卷积神经网络预测股价_利用神经网络预测股票市场
- js实现缓慢回到页面顶部
- golang runtime.Caller 学习笔记
- 理工生文言文的致谢——小木虫
- 大鹏教你数据分析系列--运动员身材都是完美的吗
- I lost my spoon
- 从程序员辞职到知乎上市,你还以为周源的成功是偶然吗?