|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2007
Città: Roma
Messaggi: 20
|
[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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
L'immagine assume le stesse gradazioni dello sfondo? In tal caso, non avrebbe molto senso.
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.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
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)
Codice:
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);
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Dec 2007
Città: Roma
Messaggi: 20
|
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
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ah ok, hanno colori opposti... così ha senso.
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
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Dec 2007
Città: Roma
Messaggi: 20
|
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 |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
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)
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:16.



















