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

上面公式的意思是说将每个像素点的RGB值先分离出来,然后再按照上面的三个算式分别重新计算出RGB值然后做为当前点的RGB值。

下面看效果图片:

原图片:

处理后:

代码:

  1. /**
  2. * 怀旧效果(相对之前做了优化快一倍)
  3. * @param bmp
  4. * @return
  5. */
  6. private Bitmap oldRemeber(Bitmap bmp)
  7. {
  8. // 速度测试
  9. long start = System.currentTimeMillis();
  10. int width = bmp.getWidth();
  11. int height = bmp.getHeight();
  12. Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
  13. int pixColor = 0;
  14. int pixR = 0;
  15. int pixG = 0;
  16. int pixB = 0;
  17. int newR = 0;
  18. int newG = 0;
  19. int newB = 0;
  20. int[] pixels = new int[width * height];
  21. bmp.getPixels(pixels, 0, width, 0, 0, width, height);
  22. for (int i = 0; i < height; i++)
  23. {
  24. for (int k = 0; k < width; k++)
  25. {
  26. pixColor = pixels[width * i + k];
  27. pixR = Color.red(pixColor);
  28. pixG = Color.green(pixColor);
  29. pixB = Color.blue(pixColor);
  30. newR = (int) (0.393 * pixR + 0.769 * pixG + 0.189 * pixB);
  31. newG = (int) (0.349 * pixR + 0.686 * pixG + 0.168 * pixB);
  32. newB = (int) (0.272 * pixR + 0.534 * pixG + 0.131 * pixB);
  33. int newColor = Color.argb(255, newR > 255 ? 255 : newR, newG > 255 ? 255 : newG, newB > 255 ? 255 : newB);
  34. pixels[width * i + k] = newColor;
  35. }
  36. }
  37. bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
  38. long end = System.currentTimeMillis();
  39. Log.d("may", "used time="+(end - start));
  40. return bitmap;
  41. }

上面的代码是优化了的,也就是用到了这篇android图像处理系列之六--给图片添加边框(下)-图片叠加里面所说的getPixels()和setPixels()。自己简单的测试了一下,速度比原来getPixel()和setPixel()速度快了一倍。

最新文章

  1. Scrapy中的item是什么
  2. Swift实战-QQ在线音乐(AppleWatch版)
  3. CSS hack样式兼容模式收藏
  4. 安装Sass
  5. android studio引入第三方包记录
  6. 延时过程中要加上app.processEvents(),进度条里也要加上这句
  7. 【实用技术】DreamWeaver常用快捷键
  8. Single Number i and ii
  9. 使用jquery获取ul的li的值赋值
  10. MySQL中的空间扩展
  11. 对xlslib库与libxls库的简易封装
  12. 列表(List) 的增删改查及其他方法 和元组(tuple)的查
  13. pthread_cond_wait的spurious wakeup问题
  14. but the supplied types were (flex.messaging.io.amf.ASObject) and converted to (null).&quot;
  15. 网站压力测试ab 命令
  16. 招商信诺生产jvm 配置和自己的eclipse jdk配置
  17. 【MySQL】5.7 复制
  18. 提高工作效率-window热键
  19. spring boot零碎知识点待补充
  20. 在k8s上配置ingress并启用HTTPS证书

热门文章

  1. 3.Linux系统信息
  2. POJ 3669 简单BFS
  3. springMVC中跳转问题
  4. EasyUI--Alert()
  5. vue项目的环境变量
  6. ubutun lunix 64安装neo4j 图形数据库
  7. Python组织文件 实践:拷贝某种类型的所有文件
  8. 洛谷P2196 && caioj 1415 动态规划6:挖地雷
  9. 洛谷 P2083 找人
  10. scala细节