点击屏幕上任意一点,获取点击处的颜色值(RGB),还可以将十进制颜色值转化为十六进制颜色值显示,下面是个程序的样例:

package com.junto.text;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;import org.json.JSONArray;
import org.json.JSONException;import java.util.ArrayList;
import java.util.List;/*** Created by WangJinyong on 2019/1/23.* 获取图片上任意一点的颜色值*/
public class GetImgColorActivity extends Activity implements View.OnTouchListener {DisplayMetrics metrics;int screenWidth;//屏幕宽int screenHeigh;//屏幕高ImageView img;StringBuilder sb = new StringBuilder();Bitmap img1 = null;int X,Y;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_getimgcolor);metrics = getResources().getDisplayMetrics();screenWidth = metrics.widthPixels;//屏幕宽screenHeigh = metrics.heightPixels;//屏幕高Log.e("GetImgColorActivity", "screenWidth:" + screenWidth + "screenHeigh:" + screenHeigh);Log.e("GetImgColorActivity", "metrics.density:" + metrics.density + "metrics.densityDpi:" + metrics.densityDpi);Log.e("GetImgColorActivity", "metrics.xdpi:" + metrics.xdpi + "metrics.ydpi:" + metrics.ydpi);img = findViewById(R.id.img);img.setOnTouchListener(this);}@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {try {switch (motionEvent.getAction()) {/*** 点击的开始位置*/case MotionEvent.ACTION_DOWN:Color.parseColor("#FF1000");Log.e("tag","十六进制 颜色代码 转换为  int   类型数值="+Color.parseColor("#FF1000"));toHexEncoding(-61440);Log.e("tag","十进制颜色值转化为十六进制的颜色值显示="+toHexEncoding(-61440));Log.e("tag","十进制颜色值转化为十六进制的颜色值显示0="+toHexEncoding(0));Log.e("tag","十进制颜色值转化为十六进制的颜色值显示204="+toHexEncoding(204));Log.e("tag","十进制颜色值转化为十六进制的颜色值显示255="+toHexEncoding(255));//将单个十进制(RGB)转换成16进制数值,然后再截取拼起来成为“#FFFFFF”的形式String str = "#" + toHexEncoding(0).substring(6)+toHexEncoding(204).substring(6)+toHexEncoding(255).substring(6);Log.e("tag","str="+str);Log.e("GetImgColorActivity", "img.getWidth():" + img.getWidth() + "img.getHeight():" + img.getHeight());X = (int) motionEvent.getX() / 2;Y = (int) motionEvent.getY() / 2;Log.e("GetImgColorActivity", "起始位置:" + X + "," + Y);//根据坐标获取Bitmap bitmap = ((BitmapDrawable) img.getDrawable()).getBitmap();
//                    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.temp11);Log.e("GetImgColorActivity", "bitmap.getHeight():" + bitmap.getWidth() + "," + bitmap.getHeight());PointThread pointThread = new PointThread();pointThread.start();break;/*** 触屏实时位置*/case MotionEvent.ACTION_MOVE:Log.e("GetImgColorActivity", "实时位置:" + motionEvent.getX() + "," + motionEvent.getY());break;/*** 离开屏幕的位置*/case MotionEvent.ACTION_UP:Log.e("GetImgColorActivity", "结束位置:" + motionEvent.getX() + "," + motionEvent.getY());break;default:break;}} catch (Exception e) {e.printStackTrace();}/***  注意返回值*  true:view继续响应Touch操作;*  false:view不再响应Touch操作,故此处若为false,只能显示起始位置,不能显示实时位置和结束位置*/return false;}class PointThread extends Thread {@Overridepublic void run() {super.run();try {BitmapFactory.Options bfoOptions = new BitmapFactory.Options();bfoOptions.inScaled = false;img1 = BitmapFactory.decodeResource(getResources(), R.mipmap.temp11, bfoOptions);int bm_width = img1.getWidth();int bm_height = img1.getHeight();Log.e("GetImgColorActivity", "bm_width:" + bm_width + ",bm_height=" + bm_height);sb.append("[");for (int i = 0; i < bm_width + 1; i++) {for (int j = 0; j < bm_height + 1; j++) {
//                        Log.e("tag", "{i:" + i + ",j:" + j + "},");sb.append("{i:" + i + ",j:" + j + "},");}}sb.replace(sb.length(), sb.length(), "]");Log.e("tag", "sb.toString()=" + sb.toString());Log.e("tag", "sb.length()=" + sb.length());JSONArray jsonArray = null;jsonArray = new JSONArray(sb.toString());Log.e("tag", "jsonArray=" + jsonArray.length());int pixel = img1.getPixel(X, Y);//获取颜色int redValue = Color.red(pixel);int greenValue = Color.green(pixel);int blueValue = Color.blue(pixel);Log.e("GetImgColorActivity", "redValue=" + redValue);Log.e("GetImgColorActivity", "greenValue=" + greenValue);Log.e("GetImgColorActivity", "blueValue=" + blueValue);} catch (JSONException e) {e.printStackTrace();}}}/*** 十进制颜色值转化为十六进制的颜色值显示*/public static String toHexEncoding(int color) {String R, G, B;StringBuffer sb = new StringBuffer();R = Integer.toHexString(Color.red(color));G = Integer.toHexString(Color.green(color));B = Integer.toHexString(Color.blue(color));//判断获取到的R,G,B值的长度 如果长度等于1 给R,G,B值的前边添0R = R.length() == 1 ? "0" + R : R;G = G.length() == 1 ? "0" + G : G;B = B.length() == 1 ? "0" + B : B;sb.append("0x");sb.append(R);sb.append(G);sb.append(B);return sb.toString();}
}

获取图片上任意一点的颜色值相关推荐

  1. 利用windows 系统的画图工具获取图片上某一点的颜色RGB值

    今天编写程序时,想模仿一款软件.包括外观颜色都要求很像,但是总是找不到一个与之相似的颜色,后来就想到了可以先获取RGB三色值,然后直接给控件或者窗体的背景赋值.再网上找到很多获取RGB值得工具,但是都 ...

  2. 利用OpenCV获取图片上某一点的颜色HSV值

    在进行图像处理时我们经常需要根据图像的颜色提取特定的区域处理,很多时候 RGB 是不适合的,我们需要知道感兴趣区域的区域HSV各分量的范围. RGB 颜色使用 QQ 截图工具或者 Windows 画图 ...

  3. 已知长短轴求椭圆上任意一点的坐标_高中数学必修2:平面解析几何——椭圆(经典习题)...

    今天接着给大家分享关于高中数学必修2平面解析几何中椭圆知识点讲解,从三个方面进行讲解:基础梳理.要点整理.经典高考习题解题过程及答案. 一.基础梳理 1.椭圆的定义 2.椭圆的标准方程和几何性质 要点 ...

  4. 如何用php获取网页表格,PHP获取网页上任意表格中内容的通用程序的制作

    在工作中,经常需要对网页上的表格内容进行处理,但是,由于表格内容制作过程中的随意性,跨行跨列经常发生,所以我作了这几个函数,以获取表格的内容,程序中重要的地方已作了注解,所以在此不再重复说明,经过测试 ...

  5. 【简单图形解释】刚体上任意一点速度与刚体角速度的关系

    1. 二维平面做圆周的质点速度与角速度关系: 2. 点的速度x,y方向分解: 3. 上面x不是表示矩阵的简单相乘,而是叉乘. 4. 回转刚体上任意一点速度与刚体角速度的关系 Reference: ht ...

  6. 实现图片中文的识别和获取图片上文字的坐标(java实现)

    实现图片中文的识别和获取图片上文字的坐标(java实现)            现在利用python来进行图片的文字识别较为普遍,但是如果我们利用常用的家庭电脑来识别,需要的时间比较长,达到20~30 ...

  7. 过椭圆外一点引两条切线方程_过椭圆上任意一点的切线方程引发的思考与结论...

    过椭圆上任意一点的切线方程引发的思考与结论 邓魁甲 江西省赣州市第三中学 341000 最近笔者在讲授高三第一轮复习时遇见复习资料上一个题目:过椭圆外一点 向椭圆 作切线,与椭圆切于 两点,可知经过 ...

  8. uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)

    前言 最近在使用uni-app写H5移动端,有一个从手机拍摄从相册选择获取图片上传到文档服务器功能. 查阅uni-app发现关于上传图片,uni-file-picker文件上传,uni.chooseI ...

  9. java jts获取线上任意一点到起点的距离

    java jts获取线上任意一点到起点的距离 近期项目要求计算某段公路上一辆车的运行轨迹,通过路上的设备实时获取车辆的经纬度信息并发送到后台接收. 抽象出来就是获取线上任意一点到起点的距离,按照一定每 ...

最新文章

  1. SringMVC从入门到源码,这一篇就够
  2. FastFormers:实现Transformers在CPU上223倍的推理加速
  3. 360急速浏览器JS的调试
  4. mysql 表与表之间的条件比对_值得收藏 | 一份最完整的MySQL规范
  5. Java开发环境!为什么MySQL不推荐使用uuid作为主键
  6. java hung_java – Hung JVM消耗100%的CPU
  7. c语言+游戏破解,c语言获得键盘的按键
  8. 用Vim查看和编辑二进制文件
  9. cwm oracle,oracle info
  10. 明月浩空播放器php源码,明月浩空音乐播放器
  11. tbslog乱码转换_word 编码 转换器 在线转换器
  12. Ckeditor富文本编辑器
  13. 邮件服务解决方案--iRedMail
  14. Android警告信息:Insufficient image color contrast ratio
  15. 上交计算机考研分数线2018,2018上交考研经验贴
  16. micropython移植教程_移植MicroPython到NUCLEO_L476RG开发板
  17. 三维vr全景摄影展示满足产品720立体浏览
  18. 基于深度学习的图标型验证码识别系统(包含完整代码、界面)
  19. Javascript对象相加
  20. 1. python爬虫

热门文章

  1. 深入 AXI4总线 (四):RAM 读取实战
  2. Gerrit 2.11.5 发布,代码评审工具
  3. java hbase 批量查询数据_java Hbase 批量读取
  4. 人工智能ai换脸技术_人工智能技术如何帮助企业改善营销
  5. 2023江苏大学计算机考研信息汇总
  6. U盘安装Ubuntu16.04报unable to find a medium containing a live file system和ACPI Error错误
  7. 实时视频应用之QoS关键技术分析
  8. cuda安装linux命令,ubuntu下安装cuda的两种方法
  9. kubernetes 入门实践
  10. RabbitMQ实战指南之RabbitMQ架构及运转流程