Foros del Web » Programando para Internet » PHP »

escala de grises php

Estas en el tema de escala de grises php en el foro de PHP en Foros del Web. Hola!! estoy intentando hacer un programa para pasar una foto en truecolor a escala de grises. Cuando hago la funcion el resultado no es una ...
  #1 (permalink)  
Antiguo 07/04/2006, 10:52
 
Fecha de Ingreso: abril-2006
Mensajes: 1
Antigüedad: 18 años
Puntos: 0
escala de grises php

Hola!! estoy intentando hacer un programa para pasar una foto en truecolor a escala de grises. Cuando hago la funcion el resultado no es una imagen en escala de grises sino que m sale en escala de azul o algo parecido. No se si es que he de cambiar alguna cosa, soy nueva en esto. El codigo que tengo es el siguiente:
<?
$picture="foto.jpg";
$img= imagecreatefromjpeg($picture);

$x= imagesx($img);
$y= imagesy($img);

$copia = imagecreatetruecolor($x, $y);

for ($i=0; $i<$x; $i++)
{
for ($k=0; $k<$y; $k++)
{
$rgb = ImageColorAt($img, $i, $k);
$color = imagecolorsforindex($img, $rgb);

$r = $color['red'];
$g = $color['green'];
$b = $color['blue'];

$num_1=$r*0.2125;
$num_2=$g*0.7154;
$num_3=$b*0.0721;

$lum = ($num_1+$num_2+$num_3);

imagesetpixel($copia,$i,$k,$lum);
}
}
imagejpeg($copia,"foto_gris.jpg");
?>

Gracias por todo!!!!
  #2 (permalink)  
Antiguo 11/10/2011, 00:37
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Pregunta Respuesta: escala de grises php

mmm, se que el tema es antiguo, pero, aun asi respondere para los que pasen por esto:

simplemente suma los valores rgb y luego dividelo entre 3:

Código PHP:
            $red $color_tran["red"];
            
$green $color_tran["green"];
            
$blue $color_tran["blue"];
            
$t = ($red $green $blue) / 3;
imagesetpixel($nImagen$i$jimagecolorallocate($nImagen$t$t$t)); 
__________________
blog: hector2c.wordpress.com
email: [email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 14:45.