View Full Version : [Java] regolare la luminosità di un'immagine
Salve
Devo creae un programma che gestisca la luminosità di due immagini sovrapposte
mi spiego meglio:
Ho uno sfondo che varia dal nero al bianco assumendo tutte le gradazioni intermedie
Sovrapposta allo sfondo ho un immagine che può essere una lettera o una linea, che anch'essa varia dal nero al bianco assumendo tutte le gradazioni
il tutto ovviamente controllato dall'utente
ora... come diavolo faccio a regolare la luminosità?
grazie in antiipo per le rispote^^
MictiaN
DanieleC88
04-08-2008, 21:43
L'immagine assume le stesse gradazioni dello sfondo? In tal caso, non avrebbe molto senso. :D
Descrivimi un po' il problema, non dovrebbe essere una cosa così difficile da fare, anche se non conosco Java per bene.
Per il resto, se lavori su colori in RGB non è complicato codificarli/decodificarli e lavorarci sopra. Se sai che le componenti singole possono assumere valori da 0 a 255 (un singolo byte ognuno), puoi lavorare direttamente sui valori dei pixel; con un po' di lavoro in più, se hai una codifica in RGBA (dove A è il canale alpha) puoi anche applicare effetti di trasparenza all'immagine.
DanieleC88
04-08-2008, 21:54
Ah, chiaramente se hai solo bisogno di impostare un colore ad un componente grafico che non sia un'immagine (intesa come "matrice di pixel") ma che possa assumere dei colori, allora la cosa è ancora più semplice. Supponendo ad esempio che il bianco sia codificato come colore col valore massimo (probabilmente 0xFFFFFF) e che tu abbia una tua funzione RGB() che codifica un colore a partire dalle sue singole componenti, puoi fare in questo modo: (te lo scrivo in C perché, ripeto, di Java non me ne intendo molto)
unsigned int whitePercentage(float percent)
{
byte C;
if (percent < 0.0f)
percent = 0.0f;
else if (percent > 1.0f)
percent = 1.0f;
C = (percent * 255.0f);
return RGB(C, C, C);
}
Ovviamente la percentuale qui diventa un coefficiente che varia da 0.0 a 1.0 (che per sicurezza controllo sia interno a quell'intervallo, altrimenti lo limito: se sai che avrai un numero non eccedente in input puoi evitare il controllo).
grazie del suggerimento! ora mi studio meglio le classi Color
cmq quando l'immagine di sfondo è chiara, quella sovrapposta è scura
serve per delle misurazioni optometriche :asd:
DanieleC88
05-08-2008, 01:07
Ah ok, hanno colori opposti... così ha senso. :D
Be' se ci sono classi apposite, probabilmente ci saranno anche dei metodi già pronti per quello che devi fare. In caso contrario, ripeto, non credo sia un'operazione difficilissima reimplementarli.
ciao ;)
ok risolto
mi devo solo rivedere bene il colore alpha e ripassarmi il disegno ( studiato poco e inece ora mi serve xD)
ora ho uno di quei problemi che sembrano stupidi stupidi ma che alla fine sn complicati xD
spiego
per cambiare colore ogni volta creo un nuovo ogetto della classe Color
il costruttore ( Color(int r ,int g,int b)) acetta solo valori di tipo int
quindi nn posso sapere la percentuale del grigio che ho ottenuto, che ne sò un girgio chiaro chiaro è un grigio al 7% no?
e dato che i valori variano da 0 a 255 come faccio a sapere la percentuale?
oddio nn sò se sn riuscito a spiegarmi xD
^TiGeRShArK^
05-08-2008, 03:20
Il canale alpha non lo devi toccare dato che regola la trasparenza.
Se vuoi calcolare la percentuale per un canale in scala di grigi a 8 bit devi semplicemente fare x / 255 * 100.
se il tuo valore tra 0 e 255 è 60 otterresti quindi:
60 / 255 * 100 = 23.523% (arrotondato alla terza cifra decimale)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.