原图                                                                          效果图

代码:

  1. package com.color;
  2. import android.content.Context;
  3. import android.graphics.Bitmap;
  4. import android.graphics.BitmapFactory;
  5. import android.graphics.Canvas;
  6. import android.graphics.Color;
  7. import android.graphics.Paint;
  8. import android.util.AttributeSet;
  9. import android.widget.ImageView;
  10. public class ColorView extends ImageView {
  11. private Paint myPaint = null;
  12. private Bitmap bitmap = null;
  13. private int width, height;
  14. private int[] oldPixels;
  15. private int[] newPixels;
  16. private int color, color2;
  17. private int pixelsR, pixelsG, pixelsB, pixelsA, pixelsR2, pixelsG2,
  18. pixelsB2;
  19. public ColorView(Context context, AttributeSet attrs) {
  20. super(context, attrs);
  21. bitmap = BitmapFactory.decodeResource(context.getResources(),
  22. R.drawable.ww);
  23. width = bitmap.getWidth();
  24. height = bitmap.getHeight();
  25. oldPixels = new int[width * height];
  26. newPixels = new int[width * height];
  27. invalidate();
  28. }
  29. @Override
  30. protected void onDraw(Canvas canvas) {
  31. super.onDraw(canvas);
  32. // 获取像素
  33. bitmap.getPixels(oldPixels, 0, width, 0, 0, width, height);
  34. for (int i = 1; i < height * width; i++) {
  35. color = oldPixels[i];
  36. // 获取RGB分量
  37. pixelsA = Color.alpha(color);
  38. pixelsR = Color.red(color);
  39. pixelsG = Color.green(color);
  40. pixelsB = Color.blue(color);
  41. //R
  42. int pixel = pixelsR - pixelsG - pixelsB;
  43. pixel = pixel * 3 / 2;
  44. if (pixel < 0) {
  45. pixel = -pixel;
  46. }
  47. if (pixel > 255){
  48. pixel = 255;
  49. }
  50. pixelsR = pixel; // 计算后重置R值,以下类同
  51. //G
  52. pixel = pixelsG - pixelsR - pixelsB;
  53. pixel = pixel * 3 / 2;
  54. if (pixel < 0) {
  55. pixel = -pixel;
  56. }
  57. if (pixel > 255){
  58. pixel = 255;
  59. }
  60. pixelsG = pixel;
  61. //B
  62. pixel = pixelsB - pixelsR - pixelsG;
  63. pixel = pixel * 3 / 2;
  64. if (pixel < 0) {
  65. pixel = -pixel;
  66. }
  67. if (pixel > 255){
  68. pixel = 255;
  69. }
  70. pixelsB = pixel;
  71. // 根据新的RGB生成新像素
  72. newPixels[i] = Color.argb(pixelsA, pixelsR, pixelsG, pixelsB);
  73. }
  74. // 根据新像素生成新图片
  75. bitmap.setPixels(newPixels, 0, width, 0, 0, width, height);
  76. canvas.drawBitmap(bitmap, 0, 0, myPaint);
  77. }
  78. }

参考博文:点击打开链接

Android图像处理之冰冻效果的更多相关文章

  1. android 图像处理系列合集

    为了便于大家对滤镜算法的学习,以后发布的图像处理滤镜系列帖子会在这里汇总,本人第一次写合集,写得不好的地方大家请见谅,手头上虽然有一些滤镜的算法,但是大多不是android版的,教程里的代码大多是我借 ...

  2. Android图像处理1

    项目开发要用,在慕课中学习了一下关于Android图像处理的相关功能,并进行了整理. 在Android中,我们通过最基本的改变图像的RGBA值,改变图像的颜色与饱和度. Android中有ColorM ...

  3. Android图像处理 - 高斯模糊的原理及实现

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 由 天天P图攻城狮 发布在云+社区 作者简介:damonxia(夏正冬),天天P图Android工程师 前言 高斯模糊是图像处理中几乎每个程序员 ...

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

    图片处理时,有时需要为图片加一些边框,下面介绍一种为图片添加简单边框的方法. 基本思路是:将边框图片裁剪成八张小图片(图片大小最好一致,不然后面处理会很麻烦),分别对应左上角,左边,左下角,下边,右下 ...

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

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

  6. android图像处理系列之四--给图片添加边框(上)

    图片处理时,有时需要为图片加一些边框,下面介绍一种为图片添加简单边框的方法. 基本思路是:将边框图片裁剪成八张小图片(图片大小最好一致,不然后面处理会很麻烦),分别对应左上角,左边,左下角,下边,右下 ...

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

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

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

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

  9. 解决Android Graphical Layout 界面效果不显示

    解决Android Graphical Layout 界面效果不显示 qq463431476

随机推荐

  1. BZOJ 3503 高斯消元

    思路: 高斯消元就好啦 注意每个格子最多只能和4个相邻 所以是 n*m*n*m*5 的 并不会TLE //By SiriusRen #include <cstdio> #include & ...

  2. Kali linux 2016.2(Rolling)里Metasploit的口令猜测与嗅探

    不多说,直接上干货! 对于发现的系统与文件管理类网络服务,比如Telnet.SSH.FTP等,可以进行弱口令的猜测,以及对明文传输口令的嗅探,从而尝试获取直接通过这些服务进入目标网络的通道. 对于SS ...

  3. Linux 下易用的光盘镜像管理工具(虚拟光驱软件)转载

    作者: Frazer Kline | 2014-11-23 11:07   评论: 4 收藏: 4 分享: 10 磁盘镜像包括了整个磁盘卷的文件或者是全部的存储设备的数据,比如说硬盘,光盘(DVD,C ...

  4. CF37E Trial for Chief(最短路)

    题意 题意是给你一张 NMNMNM 的图,每个点有黑色和白色,初始全为白色,每次可以把一个相同颜色的连续区域染色,求最少的染色次数:(n,m<=50) 题解 转化为最短路.对于每一个点与它相邻的 ...

  5. Java web application——Listener

    应用程序事件提供ServletContext和HttpSession以及ServletRequest对象状态更改的通知,用户编写响应状态更改的事件监听器类,并配置和部署他们.Servlet容器会调用事 ...

  6. Linux GPT分区表16进制实例分析

    Linux GPT分区表16进制实例分析 GPT分区表随着win10的普及,已经在越来越多的新电脑上开始使用了.前段时间的新闻有看到说Intel会在后面的新平台中完全取消CSM支持,这也大概相当于后面 ...

  7. pip命令使用方法 与 错误处理

    这里把学习到的pip命令写一个汇总,方便想不起来时使用 通过cmd输入pip可以显示提示信息,中文翻译如下: 1)显示某个包的信息 pip show selenium #显示selenium模块的信息 ...

  8. 【SRM 717 DIV2 C】DerangementsDiv2

    Problem Statement You are given two ints: n and m. Let D be the number of permutations of the set {1 ...

  9. 洛谷 P3199 [HNOI2009]最小圈

    P3199 [HNOI2009]最小圈 题目背景 如果你能提供题面或者题意简述,请直接在讨论区发帖,感谢你的贡献. 题目描述 对于一张有向图,要你求图中最小圈的平均值最小是多少,即若一个圈经过k个节点 ...

  10. Canvas与Paint的0基础使用

    看了非常多android自己定义方面的资料,了解了非常多原理,遇到人家自己定义的东西也可以看得懂,可是.当自己去自己定义的时候.发现脑袋一片空白,所以就先从认识Canvas和Paint開始吧! Can ...