所以,这基本上是我好奇的:
有任何想法吗?也欢迎为我指明正确的方向。
提示:我对原生 Objective-C/Cocoa 方法更感兴趣。
基本上,DigitalColor Meter 获取鼠标坐标,在该区域周围获取 CGImageRef 屏幕截图,然后访问原始像素数据来计算 RGB 值。
您可以使用该nm命令发现应用程序调用了哪些 API。在这种情况下:
nm /Applications/Utilities/DigitalColor\ Meter.app/Contents/MacOS/DigitalColor\ Meter
其中揭示了一些有趣的调用:
U _CGDisplayBounds
U _CGGetDisplaysWithPoint
U _CGSCaptureWindowsContentsToRectWithOptions
U _CGSCurrentInputPointerPosition
U _CGSGetOnScreenWindowCount
U _CGSGetOnScreenWindowList
Run Code Online (Sandbox Code Playgroud)
CGS* 例程是私有 SPI - 好的一面是,有一个等效的公共 API,称为CGWindowListCreateImage()
一旦你有了 CGImageRef,你就可以使用以下方法访问原始像素数据:
CGImageGetDataProvider
CGDataProviderCopyData
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
349 次 |
| 最近记录: |