如何从站点读取颜色特定的像素?

时间:2020-02-19 10:38:22

标签: python colors

有一个矩形所在的站点。

您需要找出它们的颜色并将其作为RGB输出到控制台。

站点示例: enter image description here

通过坐标读取像素很重要。这意味着我输入了第一个矩形的坐标,第二个矩形的坐标,依此类推,然后从这些坐标中读取了颜色。

控制台中应显示的示例(设计无关紧要): enter image description here

2 个答案:

答案 0 :(得分:1)

如果您可以捕获网站的照片并将其保存到计算机,则可以执行此操作。 保存图像。

import urllib.request
url = 'https://ichef.bbci.co.uk/news/1024/cpsprodpb/15236/production/_109228568_mediaitem109228567.jpg'
urllib.request.urlretrieve(url, ('case5.jpg'))

然后加载图像

from PIL import Image
im = Image.open('saved photo')
pix = im.load()

然后获取像素,只需将坐标放入其中

pix[x,y]

因此,您只需完整的代码即可将像素获取到右上角。

from PIL import Image
import urllib.request
url = 'https://ichef.bbci.co.uk/news/1024/cpsprodpb/15236/production/_109228568_mediaitem109228567.jpg'
urllib.request.urlretrieve(url, ('case5.jpg'))
im = Image.open('case 5.jpg')
pix = im.load()
print(pix[0,0])

答案 1 :(得分:0)

基本上在纯Python中无法完成。但是您可以使用JavaScript来实现。
Python:

# pip install pywebview

import webview

webview.create_window('your_url')
rgb = webview.evaluate_js('find_color_by_coords('+x+', '+y+');')
print(rgb)

JavaScript(函数hexToRgb来自here):

function find_color_by_coords(x, y) {
    const hexToRgb = hex =>
        hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i
             ,(m, r, g, b) => '#' + r + r + g + g + b + b)
          .substring(1).match(/.{2}/g)
          .map(x => parseInt(x, 16))

    elem = document.elementFromPoint(x, y);
    return hexToRgb(elem.style.background);
}

请注意,我无法检查此代码,因此可能会出现错误。