这篇将讲到图片特效处理的浮雕效果。跟前面一样是对像素点进行处理,算法是通用的。

算法原理:用前一个像素点的RGB值分别减去当前像素点的RGB值并加上127作为当前像素点的RGB值。

例:

ABC

求B点的浮雕效果如下:

B.r = C.r - B.r + 127;

B.g = C.g - B.g + 127;

B.b = C.b - B.b + 127;

注意RGB值在0~255之间。

效果图:

原图                                                                              效果图

    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,pixelsB2;
    18. public ColorView(Context context, AttributeSet attrs)
    19. {
    20. super(context, attrs);
    21. bitmap = BitmapFactory.decodeResource(context.getResources(),R.drawable.ww);
    22. width = bitmap.getWidth();
    23. height = bitmap.getHeight();
    24. oldPixels = new int[width*height];
    25. newPixels = new int[width*height];
    26. invalidate();
    27. }
    28. @Override
    29. protected void onDraw(Canvas canvas) {
    30. super.onDraw(canvas);
    31. //获取像素
    32. bitmap.getPixels(oldPixels, 0, width, 0, 0, width, height);
    33. for(int i = 1;i < height*width; i++){
    34. color = oldPixels[i-1];
    35. //前一个像素
    36. pixelsR = Color.red(color);
    37. pixelsG = Color.green(color);
    38. pixelsB = Color.blue(color);
    39. //当前像素
    40. color2 = oldPixels[i];
    41. pixelsR2 = Color.red(color2);
    42. pixelsG2 = Color.green(color2);
    43. pixelsB2 = Color.blue(color2);
    44. pixelsR = (pixelsR - pixelsR2 + 127);
    45. pixelsG = (pixelsG - pixelsG2 + 127);
    46. pixelsB = (pixelsB - pixelsB2 + 127);
    47. //均小于等于255
    48. if(pixelsR > 255){
    49. pixelsR = 255;
    50. }
    51. if(pixelsG > 255){
    52. pixelsG = 255;
    53. }
    54. if(pixelsB > 255){
    55. pixelsB = 255;
    56. }
    57. newPixels[i] = Color.argb(pixelsA, pixelsR, pixelsG, pixelsB);
    58. }
    59. bitmap.setPixels(newPixels, 0, width, 0, 0, width, height);
    60. canvas.drawBitmap(bitmap,0,0,myPaint);
    61. }
    62. }

android图像处理(3)浮雕效果的更多相关文章

  1. android图像处理(3) 浮雕效果

    这篇将讲到图片特效处理的浮雕效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:用前一个像素点的RGB值分别减去当前像素点的RGB值并加上127作为当前像素点的RGB值. 例: ABC 求B ...

  2. android 图像处理系列合集

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

  3. Android图像处理实例教程

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

  4. Android图像处理1

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Unity 设置窗体透明

    设置窗口透明.窗口置顶.鼠标穿透    方法一. 缺点:边缘不平滑,有毛边 参考博客: 1.https://alastaira.wordpress.com/2015/06/15/creating-wi ...

  2. 面向对象 —— 对类(class)的理解

    类是成员变量和成员函数的封装,封装的一个重要功能就是可见性(继承除外,当然继承是面向对象的另外一个重要特性),所谓可见性,类内可见,类外不可见.可见性保证了类型安全(type-safe) 对类进行实例 ...

  3. HTTP 与 HTTPS

    https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密. 防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名. 另外是加密,加密需要一个密钥交换算法,双方 ...

  4. 开发板ping得通本地,但是不能上网

    在3531D的开发板上面接入LAN7500的USB转以太网口,加载完驱动后. 然后开启eth1 查看一下ifconfig,发现没有ip,配置一下ip 直接ping本地发现可以ping得通,代表链路是连 ...

  5. 虚拟摄像头vivi的测试(二)

    (前一部分的基础操作来源于作者:LingXiaokai 的 Ubuntu 9.10 下如何使用笔记本摄像头以及虚拟摄像头vivi的测试) 自己仅对实际操作中需要注意的点进行阐述 一.先在Ubuntu ...

  6. 紫书 例题 9-11 UVa 1331 (最优三角形剖分)

    设置f(i, j)为点i, i + 1 --j所组成的多边形. 那么可以枚举中间点k, 得f(i, j) = min{s(i, j, k), f(i, k), f(k, j) | i < k & ...

  7. HRBUST 1376 能量项链

    能量项链 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HRBUST. Original ID: 13 ...

  8. 怎样借助log4j把日志写入数据库中

            log4j是一个优秀的开源日志记录项目.我们不仅能够对输出的日志的格式自定义,还能够自定义日志输出的目的地,比方:屏幕.文本文件,数据 库,甚至能通过socket输出.本节使用MySQ ...

  9. 【v2.x OGE教程 12】 关卡编辑器帮助文档

    ] 关卡编辑器帮助文档 一.简单介绍 关卡编辑器用于游戏关卡界面元素的可视化编辑,包含元素的位置.尺寸以及其他自己定义属性.通过解析生成的数据文件就可以获取关卡信息,并能随时调整.以降低开发工作量,提 ...

  10. poj Transferring Sylla(怎样高速的推断一个图是否是3—连通图,求割点,割边)

    Transferring Sylla 首先.什么是k连通图? k连通图就是指至少去掉k个点使之不连通的图. 题目: 题目描写叙述的非常裸.就是给你一张图要求你推断这图是否是3-连通图. 算法分析: / ...