Color

Simpan warna, ambil warna layar, atau bandingkan warna. ARGB berisi opasitas (A), merah (R), hijau (G), dan biru (B); compare(), distance_rgb(), dan delta_e() mengabaikan opasitas.

Sintaks

Color(value, /)

Parameter konstruktor

NamaDeskripsi
valueString | Number
Hex string (`#AARRGGBB`/`#RRGGBB`) or raw ARGB number.
Wajib · Hanya posisi
Tanpa nilai bawaan

Nilai yang dikembalikan

Contoh

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

Field

NamaDeskripsi
argbNumber
Raw ARGB integer value.
aInt
Opasitas dari 0 (transparan) hingga 255 (sepenuhnya legap).
rInt
Red channel 0-255.
gInt
Green channel 0-255.
bInt
Blue channel 0-255.
hexString
Hex string `#AARRGGBB`.
Contoh konstruktor
c1 = Color("#FFFFFFFF")
c2 = Color(4294967295)

Metode

9 metode

Color.get

Ambil warna layar sekali: Point mengembalikan satu Color, Region mengembalikan baris warna, dan list[Point] mengembalikan daftar Color dalam urutan yang sama. Semua titik memakai gambar layar yang sama. Jika tangkapan layar atau sampel tidak tersedia, hasilnya default tanpa mencoba ulang; pilih default yang dapat dibedakan dari warna target.

Sintaks

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

Parameter

NamaDeskripsi
targetPoint | Region | list[Point]
Sampling target.
Wajib · Posisi atau nama
Tanpa nilai bawaan
intervalNumber
Jarak antar titik sampel dalam satuan koordinat Region; nilai di bawah 1 memakai 1. Nilai lebih kecil menghasilkan lebih banyak warna. Diabaikan untuk Point dan list[Point].
Opsional · Posisi atau nama
Default: 3
defaultColor | String | Number
Fallback color returned when screen capture or pixel sampling is unavailable.
Opsional · Posisi atau nama
Default: #00000000

Nilai yang dikembalikan

Color | list[list[Color]] | list[Color] — Warna sesuai bentuk target, dengan sampel yang tidak tersedia diganti default. Untuk Region, baca grid[row][column], dari atas ke bawah dan kiri ke kanan. Daftar titik kosong mengembalikan daftar kosong.

Contoh

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

Bandingkan dua warna berdasarkan toleransi RGB per saluran. Pertandingan lolos hanya jika |R1-R2|, |G1-G2|, dan |B1-B2| semuanya <= toleransi.

Sintaks

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

Parameter

NamaDeskripsi
aColor | String | Number
First color.
Wajib · Posisi atau nama
Tanpa nilai bawaan
bColor | String | Number
Second color.
Wajib · Posisi atau nama
Tanpa nilai bawaan
toleranceNumber
Perbedaan maksimum yang diizinkan per kanal RGB. 0 mensyaratkan kanal sama; 255 menerima semua warna RGB. Nilai negatif memakai 0. Naikkan bertahap memakai sampel layar nyata.
Opsional · Posisi atau nama
Default: 0

Nilai yang dikembalikan

Boolean — true jika ketiga kanal RGB berada dalam tolerance; selain itu false.

Contoh

base = Color("#FF4CAF50")
sample = Color.get(Point(620, 340))
is_same = Color.compare(base, sample, tolerance=8)  # warna UI yang hampir sama

Color.distance_rgb

Ukur gabungan perbedaan merah, hijau, dan biru antara dua warna. Nilai lebih kecil berarti nilai RGB lebih dekat; transparansi diabaikan.

Sintaks

Color.distance_rgb(a, b)

Parameter

NamaDeskripsi
aColor | String | Number
First color.
Wajib · Posisi atau nama
Tanpa nilai bawaan
bColor | String | Number
Second color.
Wajib · Posisi atau nama
Tanpa nilai bawaan

Nilai yang dikembalikan

Number — Jarak 0 hingga sekitar 441.67; 0 berarti kanal RGB identik. Pilih ambang memakai sampel dari layar Anda.

Contoh

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

Color.delta_e

Perkirakan perbedaan tampilan dua warna memakai CIE76 Delta E, ukuran perbedaan warna. Nilai lebih kecil berarti warna lebih mirip; transparansi diabaikan.

Sintaks

Color.delta_e(a, b)

Parameter

NamaDeskripsi
aColor | String | Number
First color.
Wajib · Posisi atau nama
Tanpa nilai bawaan
bColor | String | Number
Second color.
Wajib · Posisi atau nama
Tanpa nilai bawaan

Nilai yang dikembalikan

Number — Skor perbedaan tidak negatif; 0 berarti kanal RGB identik. Uji ambang di layar Anda sendiri karena kemiripan yang terlihat dapat berbeda.

Contoh

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

Color.in_range

Memeriksa apakah setiap kanal RGB berada dalam batas inklusif; alpha diabaikan. Batas bawah yang melebihi batas atas pada kanal mana pun menimbulkan error.

Sintaks

color.in_range(min_color, max_color)

Parameter

NamaDeskripsi
min_colorColor | String | Number
Batas bawah warna.
Wajib · Posisi atau nama
Tanpa nilai bawaan
max_colorColor | String | Number
Batas atas warna.
Wajib · Posisi atau nama
Tanpa nilai bawaan

Nilai yang dikembalikan

Boolean

Contoh

# Periksa apakah warna berada dalam rentang RGB
print(Color("#808080").in_range("#606060", "#A0A0A0"))

Color.is_gray

Memeriksa apakah max(R, G, B) - min(R, G, B) paling besar sebesar spread; alpha diabaikan.

Sintaks

color.is_gray(spread=15)

Parameter

NamaDeskripsi
spreadInt
Bilangan bulat terbatas dari 0 sampai 255, termasuk kedua batas.
Opsional · Posisi atau nama
Default: 15

Nilai yang dikembalikan

Boolean

Contoh

# Periksa apakah warna hampir abu-abu
print(Color("#808080").is_gray())

Color.compare

Periksa apakah warna ini dekat dengan warna lain. Perbedaan tiap kanal RGB tidak boleh melebihi tolerance; transparansi diabaikan.

Sintaks

color.compare(other, tolerance=0)

Parameter

NamaDeskripsi
otherColor | String | Number
Color to compare.
Wajib · Posisi atau nama
Tanpa nilai bawaan
toleranceNumber
Perbedaan maksimum yang diizinkan per kanal RGB. 0 mensyaratkan kanal sama; 255 menerima semua warna RGB. Nilai negatif memakai 0. Naikkan bertahap memakai sampel layar nyata.
Opsional · Posisi atau nama
Default: 0

Nilai yang dikembalikan

Boolean — true jika ketiga kanal RGB berada dalam tolerance; selain itu false.

Contoh

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

Color.distance_rgb

Ukur gabungan perbedaan RGB warna ini dengan warna lain, dengan mengabaikan transparansi.

Sintaks

color.distance_rgb(other)

Parameter

NamaDeskripsi
otherColor | String | Number
Color to compare.
Wajib · Posisi atau nama
Tanpa nilai bawaan

Nilai yang dikembalikan

Number — Jarak 0 hingga sekitar 441.67; 0 berarti kanal RGB identik. Pilih ambang memakai sampel dari layar Anda.

Contoh

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

Perkirakan perbedaan tampilan warna ini dengan warna lain memakai CIE76 Delta E, dengan mengabaikan transparansi.

Sintaks

color.delta_e(other)

Parameter

NamaDeskripsi
otherColor | String | Number
Color to compare.
Wajib · Posisi atau nama
Tanpa nilai bawaan

Nilai yang dikembalikan

Number — Skor perbedaan tidak negatif; 0 berarti kanal RGB identik. Uji ambang di layar Anda sendiri karena kemiripan yang terlihat dapat berbeda.

Contoh

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