Foros del Web » Programando para Internet » PHP »

PHP Libreria GD, Problema canal alpha?

Estas en el tema de PHP Libreria GD, Problema canal alpha? en el foro de PHP en Foros del Web. Buenos días! Les cuento, llevo unos días programando un script para poder cambiarle el color a un png con la librería de php (GD2). El ...
  #1 (permalink)  
Antiguo 09/12/2011, 02:31
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
PHP Libreria GD, Problema canal alpha?

Buenos días!

Les cuento, llevo unos días programando un script para poder cambiarle el color a un png con la librería de php (GD2).

El png originalmente siempre tiene fondo transparente y el color figura es de color negro.

El problema se presenta que cuando le paso una imagen que creó yo en el photoshop, si la imagen es un circulo o una linea curva, no lo hace perfecto y hace que pierda la forma de curva en algunos trozos, haciendo rectas.

He estado mirando y nose si puede ser algo del canal alpha.
Alguien me podría decir que me puede estar pasando?
Unas pequeñas indicaciones ...

PD:
No tengo el codigo ahora mismo aquí. Pero vamos que esta copiado de la página de php.
No hace mas que obtener la foto, obtener el color negro y remplazarlo.

Muchas gracias.
Saludos!
  #2 (permalink)  
Antiguo 09/12/2011, 08:00
 
Fecha de Ingreso: octubre-2011
Mensajes: 32
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: PHP Libreria GD, Problema canal alpha?

Sin el codigo va a ser dificil...
__________________
<?php print("Php2"); ?>
  #3 (permalink)  
Antiguo 09/12/2011, 08:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: PHP Libreria GD, Problema canal alpha?

existen 2 funciones especificas de la librería que te permiten interactuar con el canal alpha, de modo que al guardar el mismo se conserve:

imagealphablending($rs_image, false);
imagesavealpha($rs_image, true);

estudia detenidamente su documentación y aplicarlas según tu necesidad, yo las utilicé para un generador de sprites, suerte
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 09/12/2011, 15:08
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: PHP Libreria GD, Problema canal alpha?

Entonces de verás creen que el fallo que estoy teniendo con la curvas, es por el canal alfa?

saludos y gracias
  #5 (permalink)  
Antiguo 09/12/2011, 15:43
 
Fecha de Ingreso: noviembre-2008
Mensajes: 33
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: PHP Libreria GD, Problema canal alpha?

Puede ser eso, o que estes redimencionando la imagen en algun momento (Si a una esfera pixelada la achatas, deja de serlo). Si nos das algo del codigo podriamos ayudarte mejor ;)
  #6 (permalink)  
Antiguo 10/12/2011, 12:14
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: PHP Libreria GD, Problema canal alpha?

Mira estoy desesperado ya!!! :(

Mire mi code, por favor:

Código PHP:
Ver original
  1. <?php
  2. $img = imagecreatefrompng("imagen2.png");
  3.  
  4. $w = imagesx($img);
  5. $h = imagesy($img);
  6.  
  7.  
  8. /*
  9. // establece el fondo a rojo
  10.  
  11. imagefill($im, 0, 0, $rojo);
  12.  
  13. header('Content-type: image/png');
  14. imagepng($im);
  15. imagedestroy($im);
  16. */
  17.  
  18. $rojo = imagecolorallocate($img, 255, 0, 0);
  19. $verde = imagecolorallocate($img, 0, 255, 0);
  20.  
  21. for($y=0;$y<$h;$y++) {
  22.     for($x=0;$x<$w;$x++) {
  23.        
  24.          $rgb = imagecolorat($img, $x, $y);
  25.          $r = ($rgb >> 16) & 0xFF;
  26.          $g = ($rgb >> 8) & 0xFF;
  27.          $b = $rgb & 0xFF;        
  28.          
  29.          //$colorInstante = "#".str_repeat("0",2-strlen(dechex($r))).dechex($r).str_repeat("0",2-strlen(dechex($g))).dechex($g).str_repeat("0",2-strlen(dechex($b))).dechex($b).",";
  30.        
  31.          $colorInstante = "#".str_repeat("0",2-strlen(dechex($r))).dechex($r).str_repeat("0",2-strlen(dechex($g))).dechex($g).str_repeat("0",2-strlen(dechex($b))).dechex($b);
  32.                  
  33.          if ( $colorInstante == "#ffffff" )
  34.          {
  35.             imagefill($img, $y, $x, $verde);
  36.            
  37.          }/*
  38.          else
  39.          {
  40.             echo "BLANCO <br />";
  41.          }*/
  42.          
  43.    
  44.     }
  45.     //echo "<br />\r\n";
  46. }
  47. header('Content-type: image/png');
  48. imagepng($img);
  49. ?>

Un saludo y muchas gracias de antemano, por vuestro interés!


PD: imagen2.php, es un shape de photoshop, rojo! con fondo blanco.

Última edición por darkram; 10/12/2011 a las 12:16 Razón: Añadir más cosas
  #7 (permalink)  
Antiguo 11/12/2011, 14:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: PHP Libreria GD, Problema canal alpha?

Miren les haré la pregunta de otra manera ya que llevo todo el finde de semana, pensando y probando y no logro con la clave para hacerlo.

Creen ustedes que podría con php (GD2) pasar de imagen1 a imagen2, o ha cualquier color pero siempre partiendo de la imagen1 (NEGRA) ?





MUCHAS GRACIAS!
SALUDOS!
  #8 (permalink)  
Antiguo 12/12/2011, 09:33
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Es posible con libreria GD?

Sí:

Mira esta función: http://es.php.net/manual/es/function.imagefilter.php

Con el filtro IMG_FILTER_COLORIZE es posible :)

El ejemplo que da (pasar a verde!)
Código PHP:
$im imagecreatefrompng('philip.png');

/* R, G, B, así 0, 255, 0 es verde */
if($im && imagefilter($imIMG_FILTER_COLORIZE02550))
{
    echo 
'Imagen sombreada a verde con éxito.';

    
imagepng($im'philip.png');
    
imagedestroy($im);
}
else
{
    echo 
'El sombreado a verde falló.';
}
?> 
__________________
>> Eleazan's Source
>> @Eleazan
  #9 (permalink)  
Antiguo 12/12/2011, 09:33
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Aquí hay algo que te puede servir.

Cita:
Iniciado por Artificium Ver Mensaje
Aquí hay algo que te puede servir.
http://www.roseindia.net/tutorial/ph...lacecolor.html

Última edición por GatorV; 12/12/2011 a las 10:24
  #10 (permalink)  
Antiguo 12/12/2011, 13:43
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: PHP Libreria GD, Problema canal alpha?

Buenas noches!

Lo primero .. , gracias a todos por interesarse. :)

He probado el script de Eleazan y me gustaria que vieran el resultado. (Algo parecido a alguno de mis resultados de estos ultimos dias).


NOTA: El resultado es al pasarle la imagen1.png al script (ROJA).



PD: El post que me ha colgado Artificium no me sirve ya que es con un JPG y no tiene transparecias (Lo necesito).

Saludos y gracias

Última edición por darkram; 13/12/2011 a las 08:19 Razón: mod

Etiquetas: libreria, posible, canales
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:06.