分享一下我老师大神的人工智能教程!零基础,通俗易懂!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

android图像处理系列之六--给图片添加边框(下)-图片叠加相关推荐

  1. android图像处理系列之六-- 给图片添加边框(下)-图片叠加

    前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以 ...

  2. android 涂鸦之图片叠加,android图像处理系列之七--图片涂鸦,水印-图片叠加...

    图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可.前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操 ...

  3. android图像处理系列之五-- 给图片添加边框(中)

    前面一篇讲到给图片加边框的方式,只能给图片加一些有规则的边框,如果想加一些比较精美的效果,就有点麻烦了.下面就给出解决这个问题的思路. 思路是:一些比较精美的花边图片我们是很难用代码控制,就目前本人水 ...

  4. android图像处理系列之五--给图片添加边框(中)

    前面一篇讲到给图片加边框的方式,只能给图片加一些有规则的边框,如果想加一些比较精美的效果,就有点麻烦了.下面就给出解决这个问题的思路. 思路是:一些比较精美的花边图片我们是很难用代码控制,就目前本人水 ...

  5. 图片添加边框工具:AKVIS ArtSuite for Mac

    你也想为你的图片添加各种精美的边框吗?akvis artsuite mac破解版是一款用于装饰照片的工具,可以非常方便的为照片或者图片添加上精美的相框或者边框!程序可独立运行,也可以作为Photosh ...

  6. speedoffice(PPT)怎么给图片添加边框

    PPT怎么给图片添加边框呢?看看小编是怎么操作的吧 首先,用speedoffice打开PPT文件,光标选中需要添加边框的图片,如图: 然后,在右侧工具栏选择"形状设置",并在设置里 ...

  7. photoshop图片添加边框

    经常要给图片添加边框,这里记录一下. 复制图层 打开photoshop窗口,拖进一张jpg图片: 菜单[编辑->描边] 文件[存储->jpg] 即可.

  8. 图片添加边框和文字怎么弄?图片编辑在线教学

      大家平时在拍完照片后,会对它进行一些编辑处理吗?像我每次拍完照,都会对图片进行一些后期处理,有时也会给图片添加一些边框或者文字,美化图片并增加图片信息量.那你们平时都是怎么给图片加上边框和文字的呢 ...

  9. android 层级边框,有没有一种简单的方法可以在Android视图的顶部和底部添加边框?...

    有没有一种简单的方法可以在Android视图的顶部和底部添加边框? 我有一个TextView,我想沿其顶部和底部边框添加黑色边框. 我尝试将android:drawableTop和android:dr ...

最新文章

  1. 【python】点分十进制ip与数字互转
  2. 如果常数项没有经过显著性检验_Cg,Cgk 能代替偏倚显著性检验?
  3. 2019年6月19日Jerry Wang的SAP SAP Cloud Connector练习
  4. android文件搜索广播,Android 实现无网络传输文件
  5. 100套高质量的免费 PSD 界面设计素材【系列一】
  6. android:Read-only file system解决
  7. C/C++ 基础算法1
  8. GGally与pairs相关关系图_史上最全(二)
  9. 山石网科-Hillstone-L2TP-***之配置终结篇
  10. 【优化调度】基于matlab蚁群算法求解无等待流水线调度优化问题【含Matlab源码 1516期】
  11. UTM(Undergraduate Texts in Mathematics)书单 |附下载链接
  12. 三因素三水平正交表l9_正交试验在减水剂中的应用
  13. matlab 纵坐标变为百分比形势,“怎么把excel纵坐标改为百分数类型“excel中如何求百分比...
  14. python卷积神经网络预测股价_利用神经网络预测股票市场
  15. js实现缓慢回到页面顶部
  16. golang runtime.Caller 学习笔记
  17. 理工生文言文的致谢——小木虫
  18. 大鹏教你数据分析系列--运动员身材都是完美的吗
  19. I lost my spoon
  20. 从程序员辞职到知乎上市,你还以为周源的成功是偶然吗?

热门文章

  1. 2014中国数字家庭创意与应用大赛
  2. 制作最简化的Win XP安装盘(nLite)
  3. 简述常见的网络操作系统有哪些
  4. 2023年,30多岁失业了,找不到工作,该如何走出低谷?
  5. Vue实现组件——可以长按加/减号自增和自减的输入框
  6. 【python】shutil模块
  7. 基本粒子质量间的奇特关系
  8. CentOS8软件安装总教程一
  9. C#开发之——Directoryinfo(10.2)
  10. 【设计模式六大原则】:单一职责原则-带你走梦幻西游(一)