代码:

    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. BZOJ 3600 替罪羊树+线段树

    思路: 当然是抄的黄学长的题解啦 //By SiriusRen #include <cstdio> #include <algorithm> using namespace s ...

  2. coedforces #481Div(3)(ABCDEFG)

    A. Remove Duplicates Petya has an array aconsisting of nintegers. He wants to remove duplicate (equa ...

  3. CF 965 B. Battleship

    Arkady is playing Battleship. The rules of this game aren't really important.There is a field of n×n ...

  4. Haproxy实现web的页面的动静分离

    一.Haproxy概述: 概述:Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,由C语言编写而成,支持会话保持.七层处理.健康检查.故障修复后自动加载.动静分离.HAProxy ...

  5. element-ui table 行内编辑

    EditRow.ts vue+element-ui+slot-scope原生实现可编辑表格 interface NoParamConstructor<T> { new(): T; } ex ...

  6. 一个HelloWorld版的MySQL数据库管理器的设计与实现(源码)

    2011年,实习期间写了一个简单的数据库管理器. 今天,特意整理了下,分享给大家. 有兴趣的同学,可以下载源码,瞧瞧. 源码只有4个类:LoginGUI,DatabaseGUI,Record,MySQ ...

  7. 一种提高单片机i/o口驱动能力的方法

    一.简述问题 当你用单片驱动发光二极管的时,你还感觉不到P0.P1口的差别.(10-20mA之间,当中P0驱动能力最强,但对于驱动直流电机依旧非常弱.其结果就是电机不转).那么有什么办法提高驱动能力吗 ...

  8. C语言之基本算法26—佩尔方程求解

    //穷举法! /* ====================================================== 题目:求佩尔方程x*x-73*y*y=1的解. =========== ...

  9. Delegates, Events, and Anonymous Methods 委托、事件与匿名方法

    http://www.cnblogs.com/r01cn/archive/2012/11/30/2795977.html

  10. HDU 5371 Hotaru's problem Manacher+尺取法

    题意:给你一个序列,求最长的两段回文子串,要求他们共用中间的一半. 思路:利用Manacher求出p[i]表示的当前位置的最长回文串长度,然后把每一个长度大于等于2的回文串的左区间和右区间分别放到两个 ...