Color

เก็บสี อ่านสีจากหน้าจอ หรือเปรียบเทียบสี ARGB ประกอบด้วยความทึบ (A), แดง (R), เขียว (G) และน้ำเงิน (B); compare(), distance_rgb() และ delta_e() ไม่ใช้ค่าความทึบ

รูปแบบคำสั่ง

Color(value, /)

พารามิเตอร์สำหรับสร้างออบเจ็กต์

ชื่อคำอธิบาย
valueString | Number
Hex string (`#AARRGGBB`/`#RRGGBB`) or raw ARGB number.
จำเป็น · ระบุตามตำแหน่งเท่านั้น
ไม่มีค่าเริ่มต้น

ค่าที่ส่งกลับ

ตัวอย่าง

cursor = Point(540, 920)
picked = Color.get(cursor)
if picked == "#FFFFFFFF":
    click(cursor, random=6)

ฟิลด์

ชื่อคำอธิบาย
argbNumber
Raw ARGB integer value.
aInt
ความทึบตั้งแต่ 0 (โปร่งใส) ถึง 255 (ทึบทั้งหมด)
rInt
Red channel 0-255.
gInt
Green channel 0-255.
bInt
Blue channel 0-255.
hexString
Hex string `#AARRGGBB`.
ตัวอย่างการสร้างออบเจ็กต์
c1 = Color("#FFFFFFFF")
c2 = Color(4294967295)

เมธอด

9 เมธอด

Color.get

อ่านสีหน้าจอหนึ่งครั้ง: Point คืน Color เดียว, Region คืนสีเป็นแถว และ list[Point] คืนลิสต์ Color ตามลำดับเดิม ทุกจุดใช้ภาพหน้าจอเดียวกัน หากจับหน้าจอไม่ได้หรือขาดตัวอย่างสีจะคืน default โดยไม่ลองซ้ำ; เลือก default ที่แยกจากสีเป้าหมายได้

รูปแบบคำสั่ง

Color.get(target, interval=3, default="#00000000")

พารามิเตอร์

ชื่อคำอธิบาย
targetPoint | Region | list[Point]
Sampling target.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น
intervalNumber
ระยะระหว่างจุดอ่านสีตามหน่วยพิกัดของ Region; ค่าต่ำกว่า 1 จะใช้ 1 ค่าน้อยให้สีมากขึ้น ไม่ใช้กับ Point และ list[Point]
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: 3
defaultColor | String | Number
Fallback color returned when screen capture or pixel sampling is unavailable.
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: #00000000

ค่าที่ส่งกลับ

Color | list[list[Color]] | list[Color] — สีตามโครงสร้างของ target โดยแทนตัวอย่างที่อ่านไม่ได้ด้วย default สำหรับ Region อ่าน grid[row][column] จากบนลงล่างและซ้ายไปขวา ลิสต์จุดว่างคืนลิสต์ว่าง

ตัวอย่าง

c = Color.get(Point(100, 200), default="#FF000000")
grid = Color.get(Region(120, 240, 90, 60), interval=3, default="#00000000")
batch = Color.get([Point(10, 10), Point(20, 20)])

Color.compare

เปรียบเทียบสองสีด้วยค่าความคลาดเคลื่อน RGB ต่อช่องสัญญาณ การแข่งขันจะผ่านเมื่อ |R1-R2|, |G1-G2| และ |B1-B2| เท่านั้น มีทั้งหมด <= ความอดทน

รูปแบบคำสั่ง

Color.compare(a, b, tolerance=0)

พารามิเตอร์

ชื่อคำอธิบาย
aColor | String | Number
First color.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น
bColor | String | Number
Second color.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น
toleranceNumber
ความต่างสูงสุดที่ยอมรับต่อช่อง RGB ค่า 0 ต้องเท่ากันทุกช่อง; 255 ยอมรับทุกสี RGB ค่าติดลบใช้ 0 ค่อยๆ เพิ่มตามตัวอย่างสีจากหน้าจอจริง
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: 0

ค่าที่ส่งกลับ

Boolean — true เมื่อทั้งสามช่อง RGB ต่างกันไม่เกิน tolerance; มิฉะนั้นเป็น false

ตัวอย่าง

base = Color("#FF4CAF50")
sample = Color.get(Point(620, 340))
is_same = Color.compare(base, sample, tolerance=8)  # เฉด UI ที่ใกล้เคียงกัน

Color.distance_rgb

วัดความต่างรวมของช่องแดง เขียว และน้ำเงินระหว่างสองสี ค่าน้อยหมายถึงค่า RGB ใกล้กันมากขึ้น; ไม่ใช้ค่าความโปร่งใส

รูปแบบคำสั่ง

Color.distance_rgb(a, b)

พารามิเตอร์

ชื่อคำอธิบาย
aColor | String | Number
First color.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น
bColor | String | Number
Second color.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น

ค่าที่ส่งกลับ

Number — ระยะห่างตั้งแต่ 0 ถึงประมาณ 441.67; 0 หมายถึงช่อง RGB เหมือนกัน เลือกเกณฑ์ด้วยตัวอย่างสีจากหน้าจอของคุณ

ตัวอย่าง

actual = Color.get(Point(620, 340))
rgb_gap = Color.distance_rgb("#FF4CAF50", actual)
if rgb_gap <= 15:
    print("close in RGB")

Color.delta_e

ประมาณความต่างของสีที่มองเห็นด้วย CIE76 Delta E ซึ่งเป็นวิธีวัดความต่างของสี ค่าน้อยหมายถึงสีคล้ายกันมากขึ้น; ไม่ใช้ค่าความโปร่งใส

รูปแบบคำสั่ง

Color.delta_e(a, b)

พารามิเตอร์

ชื่อคำอธิบาย
aColor | String | Number
First color.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น
bColor | String | Number
Second color.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น

ค่าที่ส่งกลับ

Number — คะแนนความต่างที่ไม่ติดลบ; 0 หมายถึงช่อง RGB เหมือนกัน ทดสอบเกณฑ์กับหน้าจอของคุณเอง เพราะความคล้ายที่มองเห็นอาจต่างกัน

ตัวอย่าง

actual = Color.get(Point(620, 340))
d = Color.delta_e("#FF4CAF50", actual)
if d <= 3:
    print("looks similar to human eye")

Color.in_range

ตรวจสอบว่าแต่ละช่อง RGB อยู่ในช่วงรวมขอบเขต โดยไม่สน alpha หากขอบล่างมากกว่าขอบบนในช่องใดจะเกิดข้อผิดพลาด

รูปแบบคำสั่ง

color.in_range(min_color, max_color)

พารามิเตอร์

ชื่อคำอธิบาย
min_colorColor | String | Number
ขอบเขตสีล่าง
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น
max_colorColor | String | Number
ขอบเขตสีบน
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น

ค่าที่ส่งกลับ

Boolean

ตัวอย่าง

# ตรวจสอบว่าสีอยู่ในช่วง RGB หรือไม่
print(Color("#808080").in_range("#606060", "#A0A0A0"))

Color.is_gray

ตรวจสอบว่า max(R, G, B) - min(R, G, B) ไม่เกิน spread โดยไม่สน alpha

รูปแบบคำสั่ง

color.is_gray(spread=15)

พารามิเตอร์

ชื่อคำอธิบาย
spreadInt
จำนวนเต็มจำกัดตั้งแต่ 0 ถึง 255 รวมปลายทั้งสอง
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: 15

ค่าที่ส่งกลับ

Boolean

ตัวอย่าง

# ตรวจสอบว่าสีเกือบเป็นสีเทาหรือไม่
print(Color("#808080").is_gray())

Color.compare

ตรวจว่าสีนี้ใกล้กับอีกสีหรือไม่ ความต่างของแต่ละช่อง RGB ต้องไม่เกิน tolerance; ไม่ใช้ค่าความโปร่งใส

รูปแบบคำสั่ง

color.compare(other, tolerance=0)

พารามิเตอร์

ชื่อคำอธิบาย
otherColor | String | Number
Color to compare.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น
toleranceNumber
ความต่างสูงสุดที่ยอมรับต่อช่อง RGB ค่า 0 ต้องเท่ากันทุกช่อง; 255 ยอมรับทุกสี RGB ค่าติดลบใช้ 0 ค่อยๆ เพิ่มตามตัวอย่างสีจากหน้าจอจริง
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: 0

ค่าที่ส่งกลับ

Boolean — true เมื่อทั้งสามช่อง RGB ต่างกันไม่เกิน tolerance; มิฉะนั้นเป็น false

ตัวอย่าง

picked = Color.get(Point(540, 920))
if picked.compare("#FFFFFFFF", tolerance=5):
    click(Point(540, 920))

Color.distance_rgb

วัดความต่าง RGB รวมระหว่างสีนี้กับอีกสี โดยไม่ใช้ค่าความโปร่งใส

รูปแบบคำสั่ง

color.distance_rgb(other)

พารามิเตอร์

ชื่อคำอธิบาย
otherColor | String | Number
Color to compare.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น

ค่าที่ส่งกลับ

Number — ระยะห่างตั้งแต่ 0 ถึงประมาณ 441.67; 0 หมายถึงช่อง RGB เหมือนกัน เลือกเกณฑ์ด้วยตัวอย่างสีจากหน้าจอของคุณ

ตัวอย่าง

base = Color("#FF4CAF50")
actual = Color.get(Point(620, 340))
rgb_gap = base.distance_rgb(actual)
if rgb_gap <= 20:
    print("close enough in RGB")

Color.delta_e

ประมาณความต่างที่มองเห็นระหว่างสีนี้กับอีกสีด้วย CIE76 Delta E โดยไม่ใช้ค่าความโปร่งใส

รูปแบบคำสั่ง

color.delta_e(other)

พารามิเตอร์

ชื่อคำอธิบาย
otherColor | String | Number
Color to compare.
จำเป็น · ระบุตามตำแหน่งหรือชื่อ
ไม่มีค่าเริ่มต้น

ค่าที่ส่งกลับ

Number — คะแนนความต่างที่ไม่ติดลบ; 0 หมายถึงช่อง RGB เหมือนกัน ทดสอบเกณฑ์กับหน้าจอของคุณเอง เพราะความคล้ายที่มองเห็นอาจต่างกัน

ตัวอย่าง

base = Color("#FF4CAF50")
actual = Color.get(Point(620, 340))
perceptual_gap = base.delta_e(actual)
if perceptual_gap <= 2:
    print("looks almost the same")