Foros del Web » Programando para Internet » PHP »

Ampliar imagen sin redimensionarla (GD)

Estas en el tema de Ampliar imagen sin redimensionarla (GD) en el foro de PHP en Foros del Web. Hola, quiero añadir un borde en una imagen, pero solo en la parte inferior. He conseguido dibujar un rectángulo que hace de borde, y hace ...
  #1 (permalink)  
Antiguo 12/04/2009, 08:59
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Ampliar imagen sin redimensionarla (GD)

Hola, quiero añadir un borde en una imagen, pero solo en la parte inferior. He conseguido dibujar un rectángulo que hace de borde, y hace lo que quiero, el problema es que se "come" la parte baja de la fotografía.

Lo que quiero hacer es ampliar el tamaño de la fotografía unos 20 pixeles en la parte inferior, pero sin redimensionarla, es decir algo como ampliar el lienzo en Photoshop, pero mediante PHP + GD, como se puede conseguir esto?

Un saludo y gracias.
  #2 (permalink)  
Antiguo 12/04/2009, 10:03
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ampliar imagen sin redimensionarla (GD)

Obten el tamaño de la imagen:
Código php:
Ver original
  1. list($width, $height) = getimagesize($tuImagen);
Crea el resource a partir de la imagen (en este ejemplo, con un jpeg):
Código php:
Ver original
  1. $im = imagecreatefromjpeg($tuImagen);
Crea un lienzo donde "copiar" la imagen:
Código php:
Ver original
  1. $temp = imagecreatetruecolor($width, $height+20); //mismo ancho, 20 mas de alto
Y "pega" el resource dentro de el lienzo que acabas de crear:
Código php:
Ver original
  1. imagecopyresampled($temp, $im, 0, 0, 0, 0, $width, $height, $width, $height);
Guarda la imagen:
Código php:
Ver original
  1. imagejpeg($temp, 'nuevo_Nombre.jpg', 80);
  #3 (permalink)  
Antiguo 13/04/2009, 05:36
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ampliar imagen sin redimensionarla (GD)

Muchas gracias, tenía un quebradero de cabeza increible!

Ahora viene otro problema, el espacio me lo rellena de color negro, como le especifico que me lo rellene de color blanco?

Gracias de nuevo!
  #4 (permalink)  
Antiguo 13/04/2009, 07:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ampliar imagen sin redimensionarla (GD)

Crea el color con imagecolorallocate()
http://www.php.net/manual/es/functio...orallocate.php

Y llena la imagen creada con imagecreatetruecolor de el color especificado usando imagefill()
http://www.php.net/manual/es/function.imagefill.php
  #5 (permalink)  
Antiguo 13/04/2009, 10:07
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ampliar imagen sin redimensionarla (GD)

Hola Ronruby,

gracias por responder. Ya había visto las funciones, el problema es que no se aplicarla a la imagen :S , es decir no se como especificarle que me rellene los 30 últimos pixeles de alto de la imagen por todo el ancho... Como puedo hacer esto?

Gracias de nuevo y perdona por el toston...

Un saludo!
  #6 (permalink)  
Antiguo 13/04/2009, 15:55
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ampliar imagen sin redimensionarla (GD)

No hay necesidad de llenar los 30 últimos pixeles solamente.

Cuando creas el "lienzo", pinta el fondo de blanco y ya luego cuando pongas la imagen sobre el lienzo, solo se verán los 30 últimos pixeles del color que pusiste al lienzo.

Es como trabajar con capas en Photoshop.
  #7 (permalink)  
Antiguo 14/04/2009, 01:32
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ampliar imagen sin redimensionarla (GD)

Gracias Ronruby, ya he entendido más o menos el concepto, ahora me falta saber aplicarlo :p.

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 00:38.