Как сделать colormode?

Помощь в написании скриптов
lyvrik
Posts: 1
Joined: 25 Jan 2023, 20:38

Как сделать colormode?

Post by lyvrik » 25 Jan 2023, 20:45

Я в основном работаю с программой по типу кликера и решил попробовать переписать код из кликера в АХК, но столкнулся с проблемой что не знаю какая команда упрощает цвета.
Искал на AHK wiki но без успешно, может кто-нибудь из вас знает решение моей проблеме.
image.png
image.png (4.71 KiB) Viewed 632 times
Attachments
image.png
image.png (4.65 KiB) Viewed 632 times

mcl
Posts: 355
Joined: 04 May 2018, 16:35

Re: Как сделать colormode?

Post by mcl » 28 Jan 2023, 01:11

lyvrik wrote:
25 Jan 2023, 20:45
Я в основном работаю с программой по типу кликера и решил попробовать переписать код из кликера в АХК, но столкнулся с проблемой что не знаю какая команда упрощает цвета.
Зависит от ваших задач. У функций ImageSearch / PixelSearch есть параметр „вариативность“ (Varation) — возможно, это то, что вы ищете.

Судя по таблице, упрощение цвета достигается квантизацией. То есть, каждый канал цвета представлен числом от 0 до 255, и в режиме 0 представлены все значения, в режиме 4 значения идут с шагом 16 (то есть могут быть 0, 16, 32, ..., 255), в режиме 8 — только два значения (0, 255). Похожего результата можно добиться простыми битовыми операциями:

Code: Select all

quantizeColor( rgbInt, mode ) {
	mode := Min(Max(Floor(mode), 0), 8)
	
	r := (rgbInt & 0xFF0000) >> 16  ; Отделяем красный канал (0..255)
	g := (rgbInt & 0x00FF00) >> 8   ; Отделяем зелёный канал (0..255)
	b := (rgbInt & 0x0000FF) >> 0   ; Отделяем  синий канал (0..255)
	
	r := quantizeChannel(r) << 16  ; Квантуем каналы и возвращаем на прежние места
	g := quantizeChannel(g) << 8
	b := quantizeChannel(b) << 0
	
	Return (r | g | b)  ; объединяем каналы в одно значение цвета
}

quantizeChannel( channelValue, mode ) {
	If (channelValue == 0xFF)
		Return channelValue
	
	Return ((channelValue >> mode) << mode)  ; Убираем все биты, кроме старших M битов (M = mode)
}
github://oGDIp - GDI+ wrapper for AHK v1.1

Post Reply

Return to “Помощь”