本文目录导读:

我来为您介绍几种实现屏幕取色脚本的方法,从简单到复杂,您可以根据需求选择:
Python + Pillow(最简单)
from PIL import ImageGrab
import pyautogui
import time
def screen_pixel_color(x, y):
"""获取屏幕指定坐标的颜色"""
# 获取屏幕像素颜色
screenshot = ImageGrab.grab()
color = screenshot.getpixel((x, y))
return color
# 示例:获取鼠标位置的颜色
def get_mouse_color():
while True:
# 获取鼠标位置
x, y = pyautogui.position()
color = screen_pixel_color(x, y)
# 转换为十六进制
hex_color = '#{:02x}{:02x}{:02x}'.format(*color)
print(f"位置: ({x}, {y}) RGB: {color} Hex: {hex_color}")
time.sleep(0.1)
if __name__ == "__main__":
get_mouse_color()
Python + PyQt5(带界面)
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QGuiApplication, QCursor
class ColorPicker(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("屏幕取色器")
self.setFixedSize(300, 150)
self.setWindowFlags(Qt.WindowStaysOnTopHint) # 窗口置顶
# 创建布局
layout = QVBoxLayout()
self.color_label = QLabel("RGB: (255, 255, 255)")
self.hex_label = QLabel("HEX: #FFFFFF")
self.pos_label = QLabel("位置: (0, 0)")
self.color_box = QLabel()
self.color_box.setFixedSize(100, 100)
self.color_box.setStyleSheet("background-color: white; border: 2px solid black;")
layout.addWidget(self.color_box)
layout.addWidget(self.pos_label)
layout.addWidget(self.color_label)
layout.addWidget(self.hex_label)
self.setLayout(layout)
# 定时更新
self.timer = QTimer()
self.timer.timeout.connect(self.update_color)
self.timer.start(50) # 每50ms更新一次
def update_color(self):
"""获取鼠标位置的颜色"""
# 获取全局鼠标位置
pos = QCursor.pos()
self.pos_label.setText(f"位置: ({pos.x()}, {pos.y()})")
# 获取像素颜色
screen = QGuiApplication.primaryScreen()
pixmap = screen.grabWindow(0, pos.x(), pos.y(), 1, 1)
image = pixmap.toImage()
color = image.pixelColor(0, 0)
r, g, b = color.red(), color.green(), color.blue()
# 更新显示
self.color_label.setText(f"RGB: ({r}, {g}, {b})")
self.hex_label.setText(f"HEX: #{r:02X}{g:02X}{b:02X}")
self.color_box.setStyleSheet(f"background-color: rgb({r}, {g}, {b}); border: 2px solid black;")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ColorPicker()
window.show()
sys.exit(app.exec_())
Python 自动取色(点击复制)
import tkinter as tk
import pyautogui
import pyperclip
from PIL import ImageGrab
class AutoColorPicker:
def __init__(self):
self.root = tk.Tk()
self.root.title("自动取色器")
self.root.attributes('-topmost', True) # 置顶
self.root.geometry("250x100")
# 颜色显示
self.color_frame = tk.Frame(self.root, width=100, height=50, bg="#FFFFFF")
self.color_frame.pack(pady=5)
info_label = tk.Label(self.root, text="将鼠标移到目标颜色处,点击任意位置取色")
info_label.pack()
self.hotkey_label = tk.Label(self.root, text="按 Ctrl+C 复制颜色值")
self.hotkey_label.pack()
# 绑定快捷键
self.root.bind('<Control-c>', self.copy_color)
self.root.bind('<space>', self.capture_color)
self.current_color = None
def capture_color(self, event=None):
"""获取当前鼠标位置的颜色"""
x, y = pyautogui.position()
screenshot = ImageGrab.grab()
color = screenshot.getpixel((x, y))
hex_color = '#{:02x}{:02x}{:02x}'.format(*color)
self.current_color = hex_color
# 更新颜色显示
self.color_frame.config(bg=hex_color)
print(f"位置: ({x}, {y}) 颜色: {hex_color}")
def copy_color(self, event=None):
"""复制当前颜色"""
if self.current_color:
pyperclip.copy(self.current_color)
print(f"已复制: {self.current_color}")
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = AutoColorPicker()
app.run()
网页版(JavaScript)
<!DOCTYPE html>
<html>
<head>网页版取色器</title>
<style>
body {
font-family: Arial, sans-serif;
padding: 20px;
display: flex;
gap: 20px;
}
#colorPicker {
cursor: crosshair;
border: 2px solid #ccc;
}
#colorDisplay {
width: 100px;
height: 100px;
border: 2px solid #333;
margin: 10px 0;
}
</style>
</head>
<body>
<div>
<canvas id="colorPicker" width="400" height="300"></canvas>
</div>
<div>
<h3>点击图片选择颜色</h3>
<div id="colorDisplay"></div>
<p>RGB: <span id="rgbValue">(255, 255, 255)</span></p>
<p>HEX: <span id="hexValue">#FFFFFF</span></p>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const canvas = document.getElementById('colorPicker');
const ctx = canvas.getContext('2d');
// 创建一个渐变色示例
const gradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height);
gradient.addColorStop(0, '#FF0000');
gradient.addColorStop(0.5, '#00FF00');
gradient.addColorStop(1, '#0000FF');
ctx.fillStyle = gradient;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// 添加点击事件
canvas.addEventListener('click', function(e) {
const rect = canvas.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
const pixel = ctx.getImageData(x, y, 1, 1).data;
const hex = '#' + [pixel[0], pixel[1], pixel[2]]
.map(c => c.toString(16).padStart(2, '0'))
.join('');
document.getElementById('colorDisplay')
.style.backgroundColor = hex;
document.getElementById('rgbValue')
.textContent = `(${pixel[0]}, ${pixel[1]}, ${pixel[2]})`;
document.getElementById('hexValue')
.textContent = hex;
});
});
</script>
</body>
</html>
安装依赖
对于Python版本,需要安装:
pip install pillow pyautogui pyperclip # 或者使用 PyQt5 界面版 pip install PyQt5
使用建议
- 简单场景:使用Pillow版本,代码最简洁
- 需要界面:使用PyQt5版本
- 快捷操作:使用tkinter版本,支持快捷键
- 网页项目:使用JavaScript版本
这些脚本可以帮助您实现:
- 获取鼠标位置的颜色
- 自动复制颜色值
- 显示RGB和HEX格式
- 支持快捷键操作
根据您的具体需求选择合适的版本即可。