这篇将讲到图片特效处理的图片叠加效果。跟前面一样是对像素点进行处理,可参照前面的android图像处理系列之七--图片涂鸦,水印-图片叠加和android图像处理系列之六--给图片添加边框(下)-图片叠加两篇文章,此篇所讲的与之前有一点区别。叠加原理是两张图片的像素点按透明度叠加,不会进行颜色过滤。叠加图片可以是JPG格式,跟前在一样,最好是放大assets目录。下面看效果图:

+

代码:

[java] view plaincopy

  1. /**
  2. * 图片效果叠加
  3. * @param bmp 限制了尺寸大小的Bitmap
  4. * @return
  5. */
  6. private Bitmap overlay(Bitmap bmp)
  7. {
  8. long start = System.currentTimeMillis();
  9. int width = bmp.getWidth();
  10. int height = bmp.getHeight();
  11. Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
  12. // 对边框图片进行缩放
  13. Bitmap overlay = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.rainbow_overlay);
  14. int w = overlay.getWidth();
  15. int h = overlay.getHeight();
  16. float scaleX = width * 1F / w;
  17. float scaleY = height * 1F / h;
  18. Matrix matrix = new Matrix();
  19. matrix.postScale(scaleX, scaleY);
  20. Bitmap overlayCopy = Bitmap.createBitmap(overlay, 0, 0, w, h, matrix, true);
  21. int pixColor = 0;
  22. int layColor = 0;
  23. int pixR = 0;
  24. int pixG = 0;
  25. int pixB = 0;
  26. int pixA = 0;
  27. int newR = 0;
  28. int newG = 0;
  29. int newB = 0;
  30. int newA = 0;
  31. int layR = 0;
  32. int layG = 0;
  33. int layB = 0;
  34. int layA = 0;
  35. final float alpha = 0.5F;
  36. int[] srcPixels = new int[width * height];
  37. int[] layPixels = new int[width * height];
  38. bmp.getPixels(srcPixels, 0, width, 0, 0, width, height);
  39. overlayCopy.getPixels(layPixels, 0, width, 0, 0, width, height);
  40. int pos = 0;
  41. for (int i = 0; i < height; i++)
  42. {
  43. for (int k = 0; k < width; k++)
  44. {
  45. pos = i * width + k;
  46. pixColor = srcPixels[pos];
  47. layColor = layPixels[pos];
  48. pixR = Color.red(pixColor);
  49. pixG = Color.green(pixColor);
  50. pixB = Color.blue(pixColor);
  51. pixA = Color.alpha(pixColor);
  52. layR = Color.red(layColor);
  53. layG = Color.green(layColor);
  54. layB = Color.blue(layColor);
  55. layA = Color.alpha(layColor);
  56. newR = (int) (pixR * alpha + layR * (1 - alpha));
  57. newG = (int) (pixG * alpha + layG * (1 - alpha));
  58. newB = (int) (pixB * alpha + layB * (1 - alpha));
  59. layA = (int) (pixA * alpha + layA * (1 - alpha));
  60. newR = Math.min(255, Math.max(0, newR));
  61. newG = Math.min(255, Math.max(0, newG));
  62. newB = Math.min(255, Math.max(0, newB));
  63. newA = Math.min(255, Math.max(0, layA));
  64. srcPixels[pos] = Color.argb(newA, newR, newG, newB);
  65. }
  66. }
  67. bitmap.setPixels(srcPixels, 0, width, 0, 0, width, height);
  68. long end = System.currentTimeMillis();
  69. Log.d("may", "overlayAmeliorate used time="+(end - start));
  70. return bitmap;
  71. }

叠加的边框图片还是大点比较好,也要控制被叠加图片大小。alpha变量值可以根据需求修改,建议还是大于0.5比较好,不然原图会看不清楚。

Android图片特效处理之图片叠加相关推荐

  1. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(三)

    jquery banner滑块导航条幻灯片轮播图片滚动 jQuery blockSlide插件熔岩灯标签导航banner焦点图片切换 jquery图片冒泡插件鼠标悬停图片冒泡动画展示 jquery h ...

  2. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(一)

    实现图片墙时光穿梭特效 swiper图文卡片滑块切换特效 网页放大镜图片预览插件 图片瀑布流tab分类切换特效 js窗帘式图片切换特效 全屏带视频banner轮播图片特效 Swiper仿魅族官网大图轮 ...

  3. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(二)

    js电影图片滑动放大展示特效 jQuery列表图片全图滚动预览 jQuery游戏图片手风琴切换代码 响应式图片文字横幅布局代码 swiper新闻大图滚动组合特效 swiper图文标题滚动轮播特效 js ...

  4. php图片特效,php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法

    本文实例讲述了php_imagick实现图片剪切.旋转.锐化.减色或增加特效的方法.分享给大家供大家参考.具体分析如下: 一个可以供PHP调用ImageMagick功能的PHP扩展.使用这个扩展可以使 ...

  5. php图片特效,css3实现图片头像扫光高亮效果

    css3出来后,之前很多flash才能做的效果,现在甚至不用写一句js,单纯靠css3新增的属性就能轻松实现! css3实现图片头像扫光高亮效果,源码: 测试 *{margin:0;padding:0 ...

  6. Android学习笔记之在图片特效

    1.涂鸦(能清屏) HandWritingActivity.java [java] view plaincopy package xiaosi.handWriting; import android. ...

  7. android 图片特效处理之怀旧效果

    图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,Java都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式 ...

  8. android图片特效处理之怀旧效果

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 图片特效 ...

  9. android Bimtap 各种图片处理方法、图片特效

    原帖地址:http://gundumw100.iteye.com/blog/849729 Java代码   //压缩图片大小 public static Bitmap compressImage(Bi ...

最新文章

  1. Java项目:电商书城平台系统设计和实现(java+springboot+mysql+spring+jsp)
  2. mysql中的if else decode
  3. rehl7.3部署K8s集群
  4. 阿里内部禁用Executors创建线程池,为什么?
  5. mysql 视图 教程_MySQL VIEW(视图)
  6. mongodb备份和恢复:mongodump/mongorestore ( 二)
  7. java 查找注解_Java利用反射如何查找使用指定注解的类详解
  8. nginx与IIS服务器搭建集群实现负载均衡(三)
  9. 苹果自带录屏在哪_苹果录音功能在哪?iPhone自带录音功能的正确打开方式
  10. Android Studio系列教程四--Gradle基础
  11. SQL SERVER存储过程批量插入数据库表数据
  12. TMS320DM8168浮点DSP C674x + ARM Cortex-A8开发板VGA输出接口
  13. 洛谷 字符串题单P1957:口算练习题
  14. vue 批量下载图片并打包成zip包
  15. 阿里巴巴社招笔试题——多线程打印(2)
  16. Friendship 友谊--我最宝贵的财富
  17. 【Java中的构造器(构造方法)_基本语法_详细解读】
  18. am超外差收音机matlab,超外差式AM/FM收音机的调试
  19. OpenCV计算机视觉编程篇三《处理图像的颜色》
  20. CentOS7 安装Postgresql 11+ 源码编译安装Postgis-2.5.2

热门文章

  1. 任何字符串都可以作为c语言的标识符,2013年软考程序员模拟试题及答案解析一...
  2. Mariadb升级到mysql_mariadb的版本升级方法
  3. setTimeOut传参数
  4. android webview js交互 第一节 (java和js交互)
  5. BlogEngine.Net架构与源代码分析系列part12:页面共同的基类——BlogBasePage
  6. 深度学习助力异常胸部 X 光片检测
  7. NAS: One-Shot
  8. 百年古董电影秒变4K高清、60FPS,AI插值,还能着色
  9. 一个开发10年程序员论:零基础学习Python最正确的步骤
  10. 不是程序员看不懂的21个梗,当你改错一行代码的时候...