android编程 如何在service中获取屏幕每个像素点的RGB值

android编程 如何在service中获取屏幕每个像素点的RGB值,第1张

robot类里面有一个方法能获取屏幕像素 robot.getPixelColor(int x int y)返回color 对象然后color 对象里面有一个方法返回rgb值 color.getRGB()

采用scanLine(int)来获取每行的首地址。

索引就不会出现图像数据偏移的问题。

你需要首先计算出,你的图像的真实数据量(字节数), 可以根据QImagebyteCount()函数来获取图像的字节数,计算公式 byteCount = height W。

{

int x=5,y=5,width,height;//x,y是需要查找的点的坐标,从0开始

GdiplusStartupInput gdiplusStartupInput;

ULONG_PTR gdiplusToken;

GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);//启动GDI+,方便加载位图

Bitmap bmp(_T("E:\\cbmp"));

HBITMAP hBmp = NULL;

bmpGetHBITMAP(Color(0),&hBmp);//获取位图句柄

BITMAP bi = {0};

GetObject(hBmp,sizeof(BITMAP),&bi);//获取位图信息,包括深度,宽高,步长等

width = bibmWidth;height = bibmHeight;//保存宽高

byte pBit = new byte[bibmWidthBytesbibmHeight];

::GetBitmapBits(hBmp,bibmWidthBytesbibmHeight,pBit);//获取位图数据

int n = ybibmWidthBytes + xbibmBitsPixel/8;

int out = RGB(pBit[n+2],pBit[n+1],pBit[n]);//定位到数据中获取颜色信息

GdiplusShutdown(gdiplusToken);//关闭GDI+

}

这里是用GDI+加载位图,也可以用第三方库加载位图获取位图数据然后直接定位像素,使用的时候记得加GDI+的头文件,否则编译不过

使用GDI+ bitmap 的 GetPixel,具体实现:

//像素点的坐标值,根据实际情况来

int x = 20, y = 40;

using (Bitmap bmp = new Bitmap(@"文件路径"))

{

Color pixelColor = bmpGetPixel(x, y);

//像素点颜色的 Alpha 值

byte alpha = pixelColorA;

//颜色的 RED 分量值

byte red = pixelColorR;

//颜色的 GREEN 分量值

byte green = pixelColorG;

//颜色的 BLUE 分量值

byte blue = pixelColorB;

}

pData里面保存的就是一个一个的COLORREF结构,你只需要通过BITMAPINFOHEADER中的宽高等信息,计算位移,就可以读取某个点的RGB值了。

还有一个简单的办法,你之前已经有memBitmap这个CBitmap了,通过这个做更方便。通过SelectObject将memBitmap放到一个CDC中,直接使用函数GetPixel函数就可以获取指定某个点的RGB值了,这个不需要计算和位移。

针对某张rgb的某一色块进行“可选颜色”修改,判断方法如下:

1使用图像处理软件打开RGB,选择取色工具,获取需要修改的色块的RGB数值。

2确定该色块的RGB值范围,例如:R(100-150),G(200-255),B(0-50)。

3按照需要修改的颜色范围,使用图像处理软件的调色板或调整图像颜色的功能,选择需要的颜色,进行修改。

4修改后,可以使用颜色取样工具再次检查该色块的RGB值是否符合修改后的范围。

RGB是一种由红色(R)、绿色(G)和蓝色(B)三种颜色组成的图像格式,也被称为真彩色、全彩色或者三基色。

以上就是关于android编程 如何在service中获取屏幕每个像素点的RGB值全部的内容,包括:android编程 如何在service中获取屏幕每个像素点的RGB值、qimage::fromData获取RGB数据怎么判断图片尺寸、如何用C++获取一张bmp图片(24位)的RGB量及长宽等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9566089.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存