elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Obtener luminosidad de un pixel
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener luminosidad de un pixel  (Leído 5,933 veces)
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Obtener luminosidad de un pixel
« en: 1 Marzo 2010, 05:05 am »

Hola gente.
Estoy usando: imagecolorsforindex() para obtener los colores RGB de un pixel determinado de una imagen.
Ahora necesito tomar la LUMINOSIDAD..
Verán que en PAINT se puede ver la LUMINOSIDAD, Matiz, Saturacion, y los colores RGB de cada pixel.

Hay en PHP alguna funcion para tomar ese valor?


Gracias tios!


En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Obtener luminosidad de un pixel
« Respuesta #1 en: 1 Marzo 2010, 05:13 am »

Estuve haciendo unos calculos...
Puede ser que la luminocidad sea el 94% del promedio de los 3 valores RGB??

Por ejemplo, si tenemos 50 de R, 100 de G, y 150 de B, el promedio es 100, entonces la luminocidad es 94

??


En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Obtener luminosidad de un pixel
« Respuesta #2 en: 1 Marzo 2010, 05:47 am »

Primero, gracias por hacerme pensar, porq este tipo de cosas me encantan! ;D

ahora, jugando con gimp descubri que, el valor mas grande de rgb, sobre 2,55 va a dar igual la luminosidad.

vamos por partes, la luminosidad es la  cercania de un color al color blanco.

entonces, si tenemos el color naranja  rgb(255,128,0), el valor mas alto del rgb es el rojo, 255. entonces, 255 / 2,55 te va a dar un resultado de 100. entonces, el naranja tiene 100 de lluminosidad.

otro ejemplo, si elegimos el marron rgb(128,65,0) otravez el valor mas alto es el rojo, entonces hacemos 128 / 2,55 y nos da 50,196078431 aproximando, 50. entonces este color tiene 50% de luminosidad. ahora, como estamos en subforo de php, te hago una funcion:

Código
  1. function luminosidad($flotaRed,$flotaGreen,$flotaBlue) {
  2. $rgb = array($flotaRed,$flotaGreen,$flotaBlue);
  3. sort($rgb);
  4. $luminosidad = round((array_pop($rgb) / 2,55));
  5. if(is_num($luminosidad)){
  6. return $luminosidad;
  7. }else{
  8. return false;
  9. }
  10. }
  11.  

un saludo grande ;)
En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Obtener luminosidad de un pixel
« Respuesta #3 en: 1 Marzo 2010, 06:29 am »

Paint dice que la luminosidad del Marron, es 60 :D

Tendremos que seguir probando, porque mi tecnica del 94% del promedio, tambien es erronea
En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Obtener luminosidad de un pixel
« Respuesta #4 en: 1 Marzo 2010, 15:22 pm »

pero probaste mi marron?
ahora pruebo en paint
En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Obtener luminosidad de un pixel
« Respuesta #5 en: 1 Marzo 2010, 16:50 pm »

pasa que gimp lo trata como porcentaje, y paint lo trata como entero. entonces, si queres hacerlo por entero como el paint, basta con hacer una regla de 3 simple con el resultado de mi funcion o si queres, puede ser asi:

Código
  1. function luminosidad($flotaRed = 255,$flotaGreen = 255,$flotaBlue = 255, $flotaSalida = 1) {
  2. //$flotaSalida, si es 1, devuelve un numero como porcentaje, si es 2, devuelve el entero correspondiente a el porcentaje.
  3. $rgb = array($flotaRed,$flotaGreen,$flotaBlue);
  4. sort($rgb);
  5. $luminosidad = round((array_pop($rgb) / 2,55));
  6. if($flotaSalida=1){
  7. return $luminosidad;
  8. }elseif($flotaSalida=2){
  9. return round(($luminosidad * 240 / 100));
  10. }
  11. }

y asi, indicando el valor "$flotaSalida" puede imprimir el porcentaje, o el valor como el paint...

un saludo grande!
En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Obtener luminosidad de un pixel
« Respuesta #6 en: 1 Marzo 2010, 19:43 pm »

Grande genio!
En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Obtener luminosidad de un pixel
« Respuesta #7 en: 1 Marzo 2010, 20:04 pm »

 :-[ :-[ denada, ya pronto va a estar la libreria CastGD! (ruido, degradado, saturacion, desaturar, etc.)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pixel atipico en un monitor TFT
Hardware
alvaropl 6 3,956 Último mensaje 23 Diciembre 2010, 00:47 am
por simorg
¿como dibujar un circulo pixel a pixel? VB 6.0
Programación Visual Basic
AlxSpy 6 13,569 Último mensaje 28 Mayo 2011, 18:48 pm
por AlxSpy
Obtener valor del pixel
.NET (C#, VB.NET, ASP)
Finrael 1 3,674 Último mensaje 16 Junio 2012, 18:22 pm
por Maurice_Lupin
Obtener cada pixel del area de un Bitmap (Locked)
.NET (C#, VB.NET, ASP)
GonzaFz 0 1,945 Último mensaje 20 Junio 2012, 08:33 am
por GonzaFz
[C++]Recorrer imagen pixel por pixel con SDL
Programación C/C++
SrCooper 8 7,662 Último mensaje 7 Diciembre 2013, 18:47 pm
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines