Как прочитать цвет, указанный c пикселей с сайта? - PullRequest
0 голосов
/ 19 февраля 2020

Есть сайт, на котором расположены прямоугольники.

Вам необходимо выяснить их цвет и вывести его на консоль как RGB.

Пример сайта: enter image description here

Важно, чтобы пиксели читались по координатам. Это означает, что я ввел координаты первого прямоугольника, второго и т. Д., А затем из этих координат были прочитаны цвета.

Пример того, что должно получиться в консоли (дизайн не имеет значения): enter image description here

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Если вы можете взять фотографию с сайта и сохранить на свой компьютер, вы можете просто сделать это. Чтобы сохранить изображение.

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])
0 голосов
/ 19 февраля 2020

В основном в чистом 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 взята из здесь ):

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);
}

Обратите внимание, что я не смог проверить этот код, поэтому возможны ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...