代码:

    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 * 128 / (pixelsG + pixelsB + 1);
    43. if (pixel < 0) {
    44. pixel = 0;
    45. } else if (pixel > 255) {
    46. pixel = 255;
    47. }
    48. pixelsR = pixel;
    49. //G
    50. pixel = pixelsG * 128 / (pixelsB + pixelsR + 1);
    51. if (pixel < 0){
    52. pixel = 0;
    53. }
    54. else if (pixel > 255){
    55. pixel = 255;
    56. }
    57. pixelsG = pixel;
    58. //B
    59. pixel = pixelsB * 128 / (pixelsR + pixelsG + 1);
    60. if (pixel < 0){
    61. pixel = 0;
    62. }
    63. else if (pixel > 255){
    64. pixel = 255;
    65. }
    66. pixelsB = pixel;
    67. // 根据新的RGB生成新像素
    68. newPixels[i] = Color.argb(pixelsA, pixelsR, pixelsG, pixelsB);
    69. }
    70. // 根据新像素生成新图片
    71. bitmap.setPixels(newPixels, 0, width, 0, 0, width, height);
    72. canvas.drawBitmap(bitmap, 0, 0, myPaint);
    73. }
    74. }

Android图像处理之熔铸特效的更多相关文章

  1. Android图像处理之图形特效处理

    一.Android变形矩阵——Matricx: 跟Android图像的色彩处理基本一样,只是将ColorMatrix换成了Matrix,ColorMatrix是4*5的矩阵,Matrix是3*3的.每 ...

  2. android 图像处理系列合集

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

  3. Android图像处理实例教程

    Android图像处理实例教程 原始出处 http://vaero.blog.51cto.com/4350852/856750

  4. 多种的android进度条的特效源码

    多种的android进度条的特效源码,这个源码是在源码天堂那个网站上转载过来的,我已经修改一部分了,感觉很实用的,大家可以学习一下吧,我就不上传源码了,大家可以直接到那个网站上下载吧. 源码天堂下载地 ...

  5. Android图像处理1

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

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

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

  7. android系统联系人分组特效实现(2)---字母表快速滚动

    要实现这种功能,只需要在   android系统联系人分组特效实现(1)---分组导航和挤压动画  的基础上再加上一个自定义控件即可完成. 1.新建项目,继续新建一个java类,BladeView,用 ...

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

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

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

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

随机推荐

  1. 安卓开发--AsyncTask2

    package com.cnn.imageasyncdemo01; import android.app.Activity; import android.content.Intent; import ...

  2. kafka集群安装配置

    1.下载安装包 2.解压安装包 3.进入到kafka的config目录修改server.properties文件 进入后显示如下: 修改log.dirs,基本上大部分都是默认配置 kafka依赖zoo ...

  3. 如何在一个 U 盘上安装多个 Linux 发行版

    作者: Ambarish Kumar 译者: LCTT geekpi 本教程介绍如何在一个 U 盘上安装多个 Linux 发行版.这样,你可以在单个 U 盘上享受多个现场版live Linux 发行版 ...

  4. caffe(6) Blob,Layer,Net 以及对应配置文件的编写

    深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成.Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型.它将所有的信息数据定义为blob ...

  5. P3514 [POI2011]LIZ-Lollipop(规律+瞎搞)

    题意 给一个只有1和2的序列,每次询问有没有一个子串的和为x ( 1≤n,m≤1 000 000 )kkk ( 1≤k≤2 000 000 ) 题解 我觉得是道好题. 主要是证明一个性质:假如有一个字 ...

  6. MySql系列之单表查询

    单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 关键字的执行 ...

  7. dmesg---检查和控制内核的环形缓冲区

    dmesg命令被用于检查和控制内核的环形缓冲区.kernel会将开机信息存储在ring buffer中.您若是开机时来不及查看信息,可利用dmesg来查看.开机信息保存在/var/log/dmesg文 ...

  8. ECNUOJ 2855 贪吃蛇

    贪吃蛇 Time Limit:1000MS Memory Limit:65536KBTotal Submit:480 Accepted:109 Description  相信很多人都玩过这个游戏,当然 ...

  9. 云服务器 ECS Linux 系统下使用 dig 命令查询域名解析

    云服务器 ECS Linux 系统可以使用通常自带的 dig 命令来查询域名解析情况.本文对此进行简要说明. 查询域名 A 记录 命令格式: dig <域名> 比如,查询域名 www.al ...

  10. Strom 简介,ppt

          数据的生成可以看做一连串发生的离散事件, 这些事件流会伴随着不同的数据流.操作和分析,都会由一个通用的软件框架和基础设施来处理.     Storm 是 实时流计算框架之一.它提供了可容错 ...