LoginSignup
4
6

More than 3 years have passed since last update.

Pythonでカーソル位置のRGB値を取得する.

Last updated at Posted at 2019-08-13

概要

webサイトやアプリケーションを見ていて、「この色を自分で再現したい!!」と思うことも多いのではないでしょうか。

しかし画面上のRGB値を取得するためによく言われるやり方は
画面をスクショ ⇒ ペイントにペースト ⇒ スポイト
とかなりめんどくさいです。フリーソフト入れるのも面倒だし・・・

そこで今回は、Windows APIをpythonから扱うためのpywin32を利用して、手っ取り早くカーソル上のRGB値を取得するスクリプトを作成しました。

pywin32のインストール

pip install pywin32

以下のモジュールをimportします。


import win32gui
import win32api

DPIの設定


import ctypes
user32 = ctypes.windll.user32
user32.SetProcessDPIAware()

また、ctypesのSetProcessDPIAware関数を利用することで、現在のDPI、つまり実際にデスクトップディスプレイ上で表現されているピクセル数を考慮した座標を取得することができます.

カーソル位置の取得 & RGB値の取得


# デスクトップウィンドウの取得
desktop = win32gui.GetDesktopWindow()
document = win32gui.GetDC(desktop)

def getCursorPixel(document):
    # カーソル位置の取得
    cursor_pos = win32api.GetCursorPos()

    # 指定したPixelのRGB値の取得
    pixel_color = win32gui.GetPixel(
        document, cursor_pos[0], cursor_pos[1]
    )

    # 10進数表記のRGB値に変換
    rgb = [pixel_color >> 8*i & 0xff for i in range(3)]

    print("RGB({0},{1},{2})".format(*rgb))

動作

このやり方だと、

  1. コンソールを開いておく
  2. RGB値の欲しい位置にカーソルを持っていく
  3. Alt + Tabでコンソールにフォーカスを移す
  4. 実行

という手順を踏む必要があります。
ひょっとするとwin32apiを利用してクリックのイベントハンドラーを追加したりできれば、もっとGUIによる直感的な操作ができるかもしれません。

また、hoverに対してデザインが変わる仕様になっていたりする場合は、GetPixelに座標だけ渡してあげるなど、適宜対応してあげる必要があるでしょう.

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6