学而不思则罔,思而不学则殆

【Android】图像像素点理解

  • 前言
  • 图像处理 -ARGB初始
    • 原图
    • Alpha
    • R值测试
    • G值测试
    • B值测试
    • 非R值测试
    • 非G值测试
    • 非B值测试
  • 高级图片处理
    • 取反1
    • 取反2
    • 灰阶处理
  • Demo

前言

我们知道图像是有像素点组成,那么什么是像素点呢?

查看一张图片的属性,该图片的宽度是690像素,高度是460像素。
每一个像素点是一个数字,表示颜色的具体值。
像素值如下:

比如【#AA03DAC5】

像素 说明 举例
A 透明度 AA
R R值 03
G G值 DA
B B值 C5

图像处理 -ARGB初始

原图

     Bitmap ycy = BitmapFactory.decodeResource(getResources(), R.drawable.ycy);

设置给ImageView,展示如下:

图像处理代码,主要把像素点的值根据传入的flag做转换处理。

    private Bitmap pictureProcessing(Bitmap bitmap, int flag) {int width = bitmap.getWidth();int height = bitmap.getHeight();Log.d("zhangyu", "width:" + width + " height:" + height);//690 460Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);for (int w = 0; w < width; w++) {for (int h = 0; h < height; h++) {int c = bitmap.getPixel(w, h);newBitmap.setPixel(w, h, c & flag); //处理像素点}}show(newBitmap);return newBitmap;}

Alpha

只保留透明度

Bitmap bitmap = pictureProcessing(ycy, 0XFF00_0000);

R值测试

保留透明度和R值

        Bitmap bitmap = pictureProcessing(ycy, 0XFFFF_000);

G值测试

保留透明度和G值

        Bitmap bitmap = pictureProcessing(ycy, 0XFF00_FF00);

B值测试

保留透明度和B值

        Bitmap bitmap = pictureProcessing(ycy, 0XFF00_00FF);

非R值测试

只清除R值

        Bitmap bitmap = pictureProcessing(ycy, 0XFF00_FFFF);

非G值测试

        Bitmap bitmap = pictureProcessing(ycy, 0XFFFF_00FF);

非B值测试

        Bitmap bitmap = pictureProcessing(ycy, 0XFFFF_FF00);

高级图片处理

取反1

    //图片取反1private Bitmap negation1(Bitmap bitmap) {int width = bitmap.getWidth();int height = bitmap.getHeight();Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);for (int w = 0; w < width; w++) {for (int h = 0; h < height; h++) {int c = bitmap.getPixel(w, h);int a = c & 0xff00_0000 >> 24;int r = c & 0x00ff_0000 >> 16;int g = c & 0x0000_ff00 >> 8;int b = c & 0x0000_00ff;newBitmap.setPixel(w, h, Color.argb(255 - a, 255 - r, 255 - g, 255 - b));}}return newBitmap;}

取反2

    //图片取反2private Bitmap negation2(Bitmap bitmap) {int width = bitmap.getWidth();int height = bitmap.getHeight();Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);for (int w = 0; w < width; w++) {for (int h = 0; h < height; h++) {int c = bitmap.getPixel(w, h);int newC = ~c;newC = newC | 0xff00_0000;newBitmap.setPixel(w, h, newC);}}return newBitmap;}

灰阶处理

    //灰阶处理1public static Bitmap grayLevelOne(Bitmap originBitmap) {//【图片灰阶处理】//生成新的BitmapBitmap grayBitmap = Bitmap.createBitmap(originBitmap.getWidth(), originBitmap.getHeight(), Bitmap.Config.ARGB_8888);//创建画布Canvas canvas = new Canvas(grayBitmap);Paint mPaint = new Paint();//创建颜色变换矩阵ColorMatrix colorMatrix = new ColorMatrix();//设置饱和度为0,实现灰阶效果colorMatrix.setSaturation(0);//创建颜色过滤矩阵ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);//设置画笔的颜色过滤矩阵mPaint.setColorFilter(colorFilter);//使用处理后的画笔绘制图像canvas.drawBitmap(originBitmap, 0, 0, mPaint);return grayBitmap;}


灰阶处理应用见:【Android】应用黑白显示
Android图像处理见ColorMatrix,这个类主要是处理像素点的,通过一个长度为20的数组表示矩阵,用来处理像素点运算。

Demo

https://github.com/aJanefish/BitmapDemo

【Android】图像像素点理解相关推荐

  1. Android 图像混合技术

    Android 图像混合技术 色彩知识 色彩 光学三原色 光学三原色由:红.绿.蓝组成. 色值分别是: 红(red ):#FF0000 RGB(255,0,0) 绿(green):#00FF00 RG ...

  2. Android 图像绘制之 Drawable

    转载自:https://www.jianshu.com/p/4cd87e3c43d6,作者:不惜留恋_ (简书) 不要冲动去自定义 View 绘制简单的图形,以及显示静态的图片,可以用 Drawabl ...

  3. Android Activity的理解

    Android Activity的理解 Activity 生命周期的四个状态 Activity的生命周期分为运行.暂停.停止.销毁四个状态. 运行状态:该Activity生命开始,Activity在前 ...

  4. Atitit.遍历图像像素点rgb java attilax总结

    Atitit.遍历图像像素点rgb java attilax总结 1. 遍历像素点 1 2. 提取一行 1 3. Rgb分量提取 2 4. 其他读取像素 3 5. --code 5 6. 参考 6 1 ...

  5. 开源程序识别图像像素点_开源浏览器扩展程序,可放大图像

    开源程序识别图像像素点 您是否曾经浏览过网站并希望看到更大的图像? 这无时无刻不在我身上发生,要做到这一点并不总是那么容易. 有时,我在源代码中进行筛选,使用Ctrl + F搜索图像,复制图像源地址并 ...

  6. OpenCV学习笔记:创建/分配图像、图像读写保存、图像像素点访问修改

    环境:CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) $ pkg-config --modversion opencv 2.4.13 以下程序的 ...

  7. android 背光灯分析,Android灯光系统--深入理解背光灯

    Android灯光系统--深入理解背光灯 一.怎么控制背光灯(简述) APP将亮度值写入数据库 线程检测数据库的值是否发生变化 这种机制成为"内容观察者"--contentObse ...

  8. android handler的理解

    android handler的理解 在看handler源码前,我一直以为google构造handler的目的是方便开发者在其他线程中 调用执行主线程的方法或者在主线程中调用执行其他线程的方法.看完源 ...

  9. Android系统分区理解及目录细解

    Android系统分区 分区种类 Android 通常有以下分区: System分区: 就是我们刷ROM的分区 Data分区:   分区就是我们装APK的分区 Catch分区:是缓存分区 SDCard ...

最新文章

  1. python3.7版本_Centos7升级Python3.7.3版本
  2. linux版php运行环境,Linux系统搭建PHP运行环境
  3. 我的WCF之旅(1):创建一个简单的WCF程序
  4. poj1251 Jungle Roads Kruskal算法+并查集
  5. android 开源_Android开源如何使其成为移动市场的领导者
  6. linux 内网文件传输工具_不管你是新手PHP程序员还是大佬都要知道的PHP十大必备工具...
  7. Web服务的性能,和BCrypt性能问题的解决方法
  8. Java 字符串(一条日志信息)解析实例
  9. linux shell 十进制转十六进制_问1得10:shell十进制转换到任意进制,多大事儿,一行搞定!
  10. 剑指offer——面试题55:字符流中第一个不重复的字符
  11. 跟我一起数据挖掘(22)——spark入门
  12. 28个极简代码——python
  13. jsp高校科研项目管理系统
  14. 好玩的小霸王游戏机HTML网站源码
  15. Proximal Algorithms 6 Evaluating Proximal Operators
  16. FCPX插件:15种棱镜折射图文展示介绍动画效果 Prism Slideshow
  17. 优化Facebook广告ROI的数据驱动方法:从投放到运营
  18. 计算机博士英文复试自我介绍,考博英语复试自我介绍7篇自我介绍
  19. 那个业务大拿死在了这个地方
  20. IIS中没有frontpage服务器扩展解决方法

热门文章

  1. 笨方法学python 习题32-33
  2. 【Android】音乐播放器APP的设计与实现
  3. English Learning - L2 语音作业打卡 复习双元音 [eɪ] [aɪ] [aʊ] [əʊ] [ɔɪ] [ɪə] [ʊə] [eə] Day39 2023.3.31 周五
  4. SSM在线车队货车管理系统
  5. 在 MaCA 根目录运行所有 py 文件
  6. OkHttp3基本使用
  7. otsu阈值分割原理及实现
  8. 计算机网络之路由协议详解
  9. 计算机网络 网络层 路由汇总(路由聚合)
  10. ❤️微信小程序 云开发 教程合集(视频+图文)免费❤️