Android开发:使用Java对手机截图图片进行任意区域的颜色对比度处理操作
RGB转换测试对比度的核心算法:
开发项目过程中,对于手机屏幕截图,需要对获取到的截图的任意部分进行区域颜色对比度的识别操作,由此判定任意指定区域是否满足某对比度基本标准,但是该功能在网上任何地方都没有找到过Java方面的代码,于是根据RGB转换测试的原理:即获取每个像素点的RGB,通过RGB对比度定义公式进行像素点的集合换取。
通过上述思路,开发了一下核心功能代码。代码如下,可以配合注释理解。由于项目保密性原因,只摘取一部分核心逻辑代码。其实核心就是通过Java自带的库进行像素点的获取,然后通过数学公式进行处理。读者感兴趣的话可自行查阅转换公式,从而达到给定任意某区域的手机截图获取颜色对比度。
image = ImageIO.read(file);int width=image.getWidth();int height=image.getHeight();int minx=image.getMinX();int miny=image.getMinY();//首先读入图片,然后指定区域。System.out.println("width="+width+",height="+height+".");System.out.println("minx="+minx+",miniy="+miny+".");for(int i=minx;i<width;i+=5) {flag = 1;for(int j=miny;j<height;j+=1){flag =1;int pixel=image.getRGB(i,j);r1 = (pixel & 0xff0000) >> 16;g1 = (pixel & 0xff00) >> 8;b1= (pixel & 0xff);// System.out.println(i+"=i,"+j+"=j,("+rgb1[0]+","+rgb1[1]+","+rgb1[2]+")");//获取每个像素点的RGB。}luminanace(r, g, b) {var a = [r, g, b].map(function (v) {v /= 255;return v <= 0.03928? v / 12.92: Math.pow((v + 0.055) / 1.055, 2.4);});return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;},//进行公式转换 获取对比度(不是Java语言)var brightest = Math.max(lum1, lum2);
var darkest = Math.min(lum1, lum2);
//进行对比度处理并输出结果。
return (brightest + 0.05) / (darkest + 0.05);
Android开发:使用Java对手机截图图片进行任意区域的颜色对比度处理操作相关推荐
- Android开发笔记(九十四)图片的基本加工
位图管理Bitmap Android上的图形使用Drawable类,而位图管理则使用Bitmap类,java上与之对应的是awt包中的BufferedImage.Android开发中有需要对jpg.p ...
- android 最新 九宫格,Android开发中怎么显示一个九宫格图片
Android开发中怎么显示一个九宫格图片 发布时间:2020-11-21 15:09:33 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关Android开发中怎么显示一个九宫格 ...
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi ...
- 简单的入门Android开发和Java语言基础[图]
简单的入门Android开发和Java语言基础[图] 前言: 去年年底到今年年初,我做过简单的智能家居,也实现过一些简单的直连和远程的智能家居.于是就将最简单的通信发布出来:智能家居简单实现-使用ES ...
- Android开发教程JAVA基础(汇总)
Android游戏开发视频教程(汇总) Android开发教程JAVA基础之Java 概述 Android开发教程JAVA基础之标示符.关键字1 Android开发教程JAVA基础之标示符.关键字2 ...
- 解决android开发在大屏手机图片出现内存溢出
解决android开发在大屏手机图片出现内存溢出 http://jingyan.baidu.com/article/ed2a5d1f3191d109f6be17e8.html
- Android开发笔记(七十七)图片缓存算法
ImageCache 由于手机流量有限,又要加快app的运行效率,因此好的app都有做图片缓存.图片缓存说起来简单,做起来就用到很多知识点,可算是集Android技术之大全了.只要理解图片缓存的算法, ...
- Android开发规范[Java+android]
说明:该文档由阿里<Java开发规范>和<Android开发规范>整理而来 [强制]必须遵守,违反本约定或将会引起严重的后果: [推荐]尽量遵守,长期遵守有助于系统稳定 ...
- Android开发笔记(九十七)图片的特效处理
图片特效用到的函数 本文讲述的图片特效处理包括:怀旧.光照.光晕.底片.浮雕.模糊.锐化.黑白.冰冻.素描,所有这些特效都是基于一定的算法,对图像每个点的RGB值进行计算,并汇总所有点的计算结果生成新 ...
最新文章
- Windows7操作系统自定义运行命令(简单方法之二)
- Linux下安装mysql(2) 及常见问题解决(CentOS)
- 性能分析工具 Android TraceView
- 机器学习 + 深度学习 + 计算机视觉 + 自然语言处理: 原理, 实践以及应用 --- 干货分享(持续更新…)
- 从零开始学习OpenCL开发(一)架构
- super与this关键字的区别
- 库-libuv 和 libev的对比
- docker安装gitlab_docker 安装部署gitlab
- Js捕获地址栏信息,根据地址栏信息来判断是否要显示页面中的信息
- cimiss数据_CIMISS数据下载小助手
- 更改计算机睡眠时间注册表,如何通过修改注册表开启/关闭系统休眠?
- 【单片机】2.1 AT89S52单片机的硬件组成
- 在GIS中如何绘制胡焕庸线
- 计算机操作系统实验之进程调度(一)轮转调度法(C语言)
- 鼠标到达a标签时变成手型
- Cocos2d之Box2d基础知识
- js数组要用的方法:push、pop、unshift、shift、splice、reverse、sort、concat、join、slice、indexof、foreash、map、filter
- 【H5+来实现】uni-app框架如何跳转到第三方url或调用第三方APP
- Studio 3T 试用期破解(含破解补丁) - 解决办法
- 基因数据分析主流软件与基因预测方法步骤-搬运工