怎么获取比较常见的RGB数值呢?
是否有函数能把RGB16转换到RGB24?
我想要获取屏幕像素的RGB24的数值还有HSV数值,怎么转换怎么获取?
PixelGetColor能获取RGB24的数值吗?
Moderators: tmplinshi, arcticir
-
- Posts: 89
- Joined: 10 Aug 2019, 01:49
Re: PixelGetColor能获取RGB24的数值吗?
editing
Last edited by fwejifjjwk2 on 05 Apr 2021, 20:35, edited 1 time in total.
Re: PixelGetColor能获取RGB24的数值吗?
脚本作用类似PS的颜色取样器.
按下F3在鼠标的位置显示和刷新RGB和HSV数值.并且一只停留在按下F3位置.直到按下滚轮停止.
可以一边修改图像一边查看修改后的数值,不在需要把鼠标移动过去.PS在32位用脚本也能得到正确颜色并且PR和AE没有颜色取样器.
按下F3在鼠标的位置显示和刷新RGB和HSV数值.并且一只停留在按下F3位置.直到按下滚轮停止.
可以一边修改图像一边查看修改后的数值,不在需要把鼠标移动过去.PS在32位用脚本也能得到正确颜色并且PR和AE没有颜色取样器.
Code: Select all
#SingleInstance,Force ;决定当脚本已经运行时是否允许它再次运行. ;Force: 跳过对话框并自动替换旧实例, 效果类似于 Reload 命令.
add(x,y)
{
return x+y
}
16bit0x_toRGB(HEX , to := "RGB") ;, rgb := 0)
{
;第二个参数to可以是"RGB"或者"HSV".默认RGB
R := Format("{:i}" ,"0x" SubStr(HEX, 3, 2))
G := Format("{:i}" ,"0x" SubStr(HEX, 5, 2))
B := Format("{:i}" ,"0x" SubStr(HEX, 7, 2))
If (to = "RGB")
{
Return % "RGB: " R " " G " " B
}
If (to = "HSV")
{
max:=max(R,G,B) ;
min:=min(R,G,B)
if (R = max){
H := (G-B)/(max-min)
}
if (G = max){
H := 2 + (B-R)/(max-min)
}
if (B = max){
H := 4 + (R-G)/(max-min)
}
H := Format("{:.0f}" , H := H * 60)
if (H < 0){
H := H + 360
}
;计算方法来源 https www.cnblogs.com /Peit/p/7133244.html Broken Link for safety
V := Format("{:.0f}" , max(R,G,B)*100/255)
S := Format("{:.0f}" , (max-min)*100/max)
Return % "HSV: " H " " S " " V
}
}
;方案4
f3::
CoordMode, Mouse
CoordMode, ToolTip
CoordMode, Pixel
MouseGetPos MouseX, MouseY
pianyi := 3 ;偏移量; 因为不能直接拾取鼠标正下面的像素.会拾取到上次结果颜色的对话"边框".....
MouseX_p := Add(MouseX, pianyi)
MouseY_p := Add(MouseY, pianyi)
Loop
{
Sleep 80
;MouseGetPos MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%, RGB
color001 := 16bit0x_toRGB(color,"RGB")
color002 := 16bit0x_toRGB(color,"HSV")
ToolTip, %color001% `n%color002%, %MouseX_p%, %MouseY_p%
if GetKeyState("MButton" , "p" )
{
ToolTip
break
}
}
return
Who is online
Users browsing this forum: fracsh and 4 guests