Script di conversione rgb in hex
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- Linpassion
- Linux 2.x
- Messaggi: 337
- Iscritto il: mar 30 ott 2012, 11:17
- Slackware: 14.2
- Desktop: xfce, fluxbox
Script di conversione rgb in hex
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.
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.
- targzeta
- Iper Master
- Messaggi: 6631
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Script di conversione rgb in hex
Intanto che posti quello che hai fatto, vedi se può andar bene questo:
Emanuele
Codice: Seleziona tutto
$> a=($(echo 'rgb(xxx,yyy,zzz)' | sed 's/.*(\([^)]*\))/\1/;s/,/ /g'))
$> set | grep '^a='
a=([0]="xxx" [1]="yyy" [2]="zzz")
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- Linpassion
- Linux 2.x
- Messaggi: 337
- Iscritto il: mar 30 ott 2012, 11:17
- Slackware: 14.2
- Desktop: xfce, fluxbox
Re: Script di conversione rgb in hex
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
}
- targzeta
- Iper Master
- Messaggi: 6631
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Script di conversione rgb in hex
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: e quindi:
Nel secondo caso, semplicemente:
Emanuele
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}"
}
Codice: Seleziona tutto
FROM=$(rgbtohex $(zenity --color-selection))
Codice: Seleziona tutto
FROM=$(zenity --color-selection | tr '(,)' ':/\0')
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama