Pagina 1 di 1

Script di conversione rgb in hex

Inviato: mar 6 set 2016, 21:49
da Linpassion
So che non sono il primo a chiedere questo, e prima di scrivere ho visto in lungo e largo google e questo forum
Sostanzalmente vorrei fare uno script che mi permetta di gestire il wallpaer (pictures, gradiente e solid).
Il problema principale riguarda la parte del gradient, poic la funzione di color selct di zenity da l'output in rgb nel seguente modo

rgb(xxx,yyy,zzz).

ora io dovrei convertire i tre valori in esadecimale. L'ostacolo non è tanto con convertire in hex, ma estrarre i singoli valori:xx,yyy,zzz. La soluzione che ho trovato (usando sed e poi cut) è troppo l'unga, percio mi chiedevo se con le espressioni regolari, in un colpo solo posso estrarre i songoli valori. La concatenazionefinale non è un problema.

Re: Script di conversione rgb in hex

Inviato: mar 6 set 2016, 23:17
da targzeta
Intanto che posti quello che hai fatto, vedi se può andar bene questo:

Codice: Seleziona tutto

$> a=($(echo 'rgb(xxx,yyy,zzz)' | sed 's/.*(\([^)]*\))/\1/;s/,/ /g'))
$> set | grep '^a='
a=([0]="xxx" [1]="yyy" [2]="zzz")
Emanuele

Re: Script di conversione rgb in hex

Inviato: mer 7 set 2016, 8:55
da Linpassion
si il mio codice sarebbe questo

Codice: Seleziona tutto

function SETGRADIENT ()
{
  # Converione da rbg ad dec .. echo "o  base=16; nummero rgb" | bc ( esempio echo "obase=16; nummero 255"|bc  -> FF)
  # FROM - primo colore
  FROM=$(zenity --color-selection)
  # qui ci va la stringa che che con sed eleminavo le parentesi e la parola rgb
  # con cut ho selezionato i tre colori
  echo $FROM | cut -d',' -f1,
  echo $FROM | cut -d',' -f2
  echo $FROM | cut -d',' -f3
 
  # TO secondo colore   
  TO=$(zenity --color-selection --show-palette)
  # MODE tipo di gradiente
  #MODE=$(zenity --list --text="Gradient mode"  --radiolist --column "" --column "Mode" TRUE Horizontal FALSE Vertical FALSE Diagonal FALSE 	 Crossdiagonal  False Pipecross FALSE Elliptic FALSE Rectangle FALSE Piramid)
 # Applicazione delle impostazioni
 fbsetroot -gradient "$MODE" -from $FROM -to $TO
}



Re: Script di conversione rgb in hex

Inviato: mer 7 set 2016, 20:22
da targzeta
Ora però manca sapere il formato di $FROM e $TO. Dal manuale mi pare di capire che tu debba passarli come '#XXXXXX' (esadecimale), però sicuro che non funziona anche con "rgb:<0,255>/<0,255>/<0,255>"? Purtroppo non ho fluxbox e non posso provare.

Nel primo caso:

Codice: Seleziona tutto

function rgbtohex ()
{
  hex=$(echo "obase=16;$1" | sed 's/rgb(\([^)]*\))/\1/;s/,/;/g'| bc | tr -d '\n')
  echo "#${hex}"
}
e quindi:

Codice: Seleziona tutto

FROM=$(rgbtohex $(zenity --color-selection))
Nel secondo caso, semplicemente:

Codice: Seleziona tutto

FROM=$(zenity --color-selection | tr '(,)' ':/\0')
Emanuele