Foros del Web » Programando para Internet » PHP »

Cambiar los colores de una imagen

Estas en el tema de Cambiar los colores de una imagen en el foro de PHP en Foros del Web. Buenas a la gente del foro me da gusto volver a encontrarlos. Tengo dos preguntas: 1ª pregunta es la siguiente, tengo una imagen que la ...
  #1 (permalink)  
Antiguo 08/11/2002, 15:05
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Mensaje Cambiar los colores de una imagen

Buenas a la gente del foro me da gusto volver a encontrarlos.
Tengo dos preguntas:
1ª pregunta es la siguiente, tengo una imagen que la estoy recuperando desde una base de datos que es una MSSQL2000, a la hora de seleccionar la imagen me gustaria que pueda cambiarle el color a la mismo ( osea que pase a negativo) se puede???? ;)
2ª pregunta. Cuando tomo la imagen de la base de datos puedo estableserle el tamaño en que quiero verla en la pantalla, ya estoy recuperando el alto y ancho de cada imagen pero superan el tamanio del cuadro donde quiero ver la misma, y lo deforma como puedo solucionar ese problema.
Desde ya muchas gracias, les mando un saludo y suerte.
  #2 (permalink)  
Antiguo 08/11/2002, 15:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tendras q tratar tu imagen con las funciones de la libreria GD de PHP ...

Exactamente funcion q te haga el efecto " negativo" .. no conozco .. pero lo de redimensinar la imagen al tamaño que quieras (no el clasico cambiar los valores de los tag HTML alto y ancho del img ..) si que existen como tal ...

Revisa las funciones de las GD (y recuerda q son una extension que has de tener instaldo bajo tu PHP ... ):

http://www.php.net/manual/en/ref.image.php

Un saludo,
  #3 (permalink)  
Antiguo 08/11/2002, 16:04
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias, por contestar.
Lo de las librerias GD las tengo habilitadas, ya que de lo contrario no podria ver las imagenes, el tema de manipular el tamanio de la imagen se que se hace un calculo del alto y el ancho de origecon el alto y el ancho de destino, que se utiliza mucho en el lenguage C, pero bueno voy a intentarlo si me funciona en PHP.
Lo de invertir el color de las imagenes era lo que me interesaba, pero bueno seguire leyendo el libro y dandole para adelante.
desde ya gracias.
Salu2 Chuty
  #4 (permalink)  
Antiguo 08/11/2002, 16:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Solo un detalle ...

Para extraer una imagen de tu base de datos o leerla al "vuelo" desde su ubicacion por PHP .. No es necesario usar las librerias graficas de PHP GD .... Tan solo necesitas lo q estaras usando ya .. las cabeceras HTTP correspondienetes al fomato MINE que toke (content-type: img/jpg .. img/gif .. etc ...) montadas en un header() ....

Lo que si que te hace falta las librerias graficas GD es para manipularlas .. y sobre todo para crearlas.

Un saludo,
  #5 (permalink)  
Antiguo 11/11/2002, 17:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
jeje .. encontré lo de pasar a B/N una imagen ... (por si todavia andas buscandolo):

Código PHP:
function ConvertGreyscale($image){
# this file outputs a grey version of specified image
 
$total ImageColorsTotal($image);
 for( 
$i=0$i<$total$i++){
    
$old ImageColorsForIndex($image$i);
    
    
#trying to keep proper saturation when converting
    
$commongrey = (int)(($old[red] + $old[green] + $old[blue]) / 3);
    
ImageColorSet($image$i$commongrey$commongrey$commongrey);
 }

Revisa las fuciones GD q se usan en la funcion y mira la version de tus GD q uses .. Recuerda q estan las GD 1.x y GD 2.x ..

Un saludo,
  #6 (permalink)  
Antiguo 12/11/2002, 07:30
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias Cluster,
Sabia que algo de eso tenia que haver, tambien sabia que no podias dejar de responder en el foro ya que el 80 % de las respuestas son tuyas, desde ya muchas gracias y lo estoy provando, despues te contesto como me fue.
Saludos
  #7 (permalink)  
Antiguo 12/11/2002, 07:53
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Para el tema de redimensionar (y el tamaño tb ;)) usa imagecopyresize()
__________________
Usuario registrado de Linux #288725
  #8 (permalink)  
Antiguo 12/11/2002, 11:16
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias epplestun te cuento con mi ejemplo cual es mi problema,

<?php
// ejemplo de copyresize
$imagen1 = imagecreatefromjpeg("pareja.jpg");
// Se obtienen las dimensiones de la imagen
$ancho = imagesx($imagen1);
$alto = imagesy($imagen1);

$imagen2 = imagecreatefromjpeg("tecnica.jpg");
// Se obtienen las dimensiones de la imagen
$ancho1 = imagesx($imagen2);
$alto1 = imagesy($imagen2);


/* Se copia la imagen original */
imagecopyresized($imagen2, $imagen1, 0, 0, 0, 0, $ancho1 - 1,
$alto1 - 1, $ancho - 1, $alto - 1);


header("Content-type: image/png");
imagepng($imagen2);
imagedestroy($imagen2);
imagedestroy($imagen1);
?>
Este es un ejemplo con el (imagecopyresized) con el cual estoy intentando resolver mi problema, lo unico que pueden ver es que aparte de redimencionar el tamaño de la imagen que la cual se deforma al tamaño de la segunda imagen cambia el color de la misma.
Otro tema es que no lo pude utilizar con imagenes de formato png que son con las cuales trabajo en mi base.
desde ya muchas gracias.

A Cluster estoy probando lo tuyo (ConvertGreyscale), por el momento no le pesque la vuelta pero sigo intentando, no sabes donde puedo encontrar mas informacion de ese tema.
Gracias a todos les mando un saludo y suerte
  #9 (permalink)  
Antiguo 12/11/2002, 11:23
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias epplestun te cuento con mi ejemplo cual es mi problema,

<?php
// ejemplo de copyresize
$imagen1 = imagecreatefromjpeg("pareja.jpg");
// Se obtienen las dimensiones de la imagen
$ancho = imagesx($imagen1);
$alto = imagesy($imagen1);

$imagen2 = imagecreatefromjpeg("tecnica.jpg");
// Se obtienen las dimensiones de la imagen
$ancho1 = imagesx($imagen2);
$alto1 = imagesy($imagen2);


/* Se copia la imagen original */
imagecopyresized($imagen2, $imagen1, 0, 0, 0, 0, $ancho1 - 1,
$alto1 - 1, $ancho - 1, $alto - 1);


header("Content-type: image/png");
imagepng($imagen2);
imagedestroy($imagen2);
imagedestroy($imagen1);
?>
Este es un ejemplo con el (imagecopyresized) con el cual estoy intentando resolver mi problema, lo unico que pueden ver es que aparte de redimencionar el tamaño de la imagen que la cual se deforma al tamaño de la segunda imagen cambia el color de la misma.
Otro tema es que no lo pude utilizar con imagenes de formato png que son con las cuales trabajo en mi base.
desde ya muchas gracias.

A Cluster estoy probando lo tuyo (ConvertGreyscale), por el momento no le pesque la vuelta pero sigo intentando, no sabes donde puedo encontrar mas informacion de ese tema.
Gracias a todos les mando un saludo y suerte
  #10 (permalink)  
Antiguo 12/11/2002, 20:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El ejemplo de la funcion esa de "greyScale" lo sacque de PHP.net (no recuerdo de q funcion) de los "user comments" (comentarios de los usuarios).

El parámetro q tienes que pasarle $image que menciona no es el "fichero imagen"; es decir cosa.jpg .. sino el "puntero de la imagen" (por decirlo así) tras abrirlo con imagecreateXXXXX() .. como ya lo usas en el último ejemplo q pusistes ...

Un saludo,
  #11 (permalink)  
Antiguo 13/11/2002, 14:10
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias a todos los foreros, eh podido resolver el tema de poder llevar a escala una imagen .
Ahi les va un pequeño ejemplo para que le pueda ser util a algun otro aprendiz de PHP.
<?php

////////////////////////////////////
// * imagen a reducir src * //
///////////////////////////////////

$imgsrc = imagecreatefromjpeg("196434.jpg");

// se obtienen las dimensiones de la imagen
$srcx = imagesx($imgsrc);
$srcy = imagesy($imgsrc);

//////////////////////////////////////
// * plantilla en blanco trg * //
//////////////////////////////////////

$x_size = 500;
$y_size = 200;
$imgtrg = imagecreate ( $x_size, $y_size);

$facx = $x_size / $srcx;
$facy = $y_size / $srcy ;

if($facx < $facy)
$facred=$facx;
else
$facred =$facy;

$resx = $srcx * $facred;
$resy = $srcy * $facred;

imagecopyresized($imgtrg, $imgsrc, 0, 0, 0, 0, $resx -1, $resy -1,
$srcx -1, $srcy -1);

header("content-type: image/png");
imagepng($imgtrg);
imagedestroy($imgtrg);
imagedestroy($imgsrc);
?>
Espero que les sea util a algun otro forero.
Ahhhh me olvidava si quisiera cambiar el formato de video de la imagen insertada, una solucion seria en la planilla que creo con el imagecreate le coloco un color y automaticamente me hace el video invertido como un negativa.
Mil Gracias a todos saludos
  #12 (permalink)  
Antiguo 13/11/2002, 14:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
De acuerdo

En nombre de todos, gracias por compartir la solución q le distes al problema.

¿Podrias comentar el tema de realizar efectos con la imagen (el tema de pasar a B/N la imagen creada) .. o como tocar los canales (RGB?) de la imagen q se crea?

Incluso .. con esto mismo podrias ponerlo en las FAQ's de PHP (lo de reescalar una imagen y tal vez el tema de B/N) ...

Un saludo,
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 19:21.