Muchos saludos, comunidad de software libre, en esta ocasión quiero compartir una función que escribí en C para poder obtener el color de un pixel en una pantalla sin muchas complicaciones, para ello debe instalar primero
apt install grabc xdotool
La función es la siguiente:
char *color_pixel(int x, int y)
{
FILE *f = NULL;
char col[15] = {'\0'};
gchar cmd[80] = {'\0'};
system(«grabc 2>/tmp/colpx &»);
sleep(2); /* Debe incluir unistd.h */
sprintf(cmd, «xdotool mousemove_relative –sync %d %d click 1», x, y);
puts(cmd); /* Incluya stdio.h para usar esta función */
system(cmd); /* debe incluir stdlib.h */
f = fopen(«/tmp/colpx», «r»);
if(f == NULL)
return «error»;
else
{
fgets(col, 80, f);
fclose(f);
}
return strdup(col); /* Debe incluir string.h */
}
Para usarla:
char *color = NULL;
color = color_pixel(200, 500);
printf(«El color de este pixel es %s\n», color);
-Es muy necesario este tipo de funciones. Las referencias que he encontrado se refieren a gdk pero a mi parecer no hay estabilidad en la api y algunas funciones ya son obsoletas y hay que readaptar programas que la usen.
-Luego mueve el mouse a una posicion x, y y luego da un click manipulando el mouse, usted verá un salto del puntero a causa de esto.
-la posición se está tomando desde la posición actual del mouse.
Puede obtener el color de un pixel desde la terminal sin instalar nada con:
xwd -root -silent | convert xwd:- -depth 8 -crop ‘1×1+300+500’ txt:- | grep -om1 ‘#\w\+’ Donde 300 es una posicion X=300 y 500 son Y=500
Deberias pegarlo con
o asi te quedamas clara visualmente
Igual, mejor es todo en bash
grabc $( xrectsel | cut -d + -f 2,3)