PHP: ¿Cómo hago para crear bordes a mis imágenes?

De Foros del Web

Respuesta : Es bastante simple pero para el que no sabe nada...primero un repasito por lo basico :P para crear una imagen nueva dinamicamente, sin contenido y mostrarla

Código PHP:

<?php
  header("Content-type: image/png");
  //definimos el tamaño de la imagen
  $alto = 60;
  $ancho = 150;
  $im = imagecreatetruecolor($ancho,$alto);
  $white = imagecolorallocate($im, 255,255,255);
  imagefill($im,0,0,$white);  
imagepng ($im);
imagedestroy($im);
?> 

Por ejemplo si quisieramos usar una imagen ya existente

Código PHP:

<?php
  header("Content-type: image/png");
  //definimos el tamaño de la imagen
  $archivo = "imagen.png";   
  $im = imagecreatefrompng  ($archivo);
   imagepng ($im);
  imagedestroy($im);
  ?> 

Es bastante facil en el siguiente ejemplo usare la funcion line y dibujare una imagen nueva

Código PHP:

<?php
  header("Content-type: image/png");
  //definimos el tamaño de la imagen
  $alto = 60;
  $ancho = 150;
  $im = imagecreatetruecolor($ancho,$alto);
  //definimos algunos colores
  $grey = imagecolorallocate($im, 107,107,107);
  $white = imagecolorallocate($im, 255,255,255);
  //creamos un primer fondo liso
  imagefill($im,0,0,$white);
  //creamos los bordes
  imageline($im, 0,0, $ancho, 0,$grey);
  imageline($im, $ancho-1,0, $ancho-1, $alto, $grey);
  imageline($im, 0, $alto-1 , $ancho, $alto-1, $grey);
  imageline($im, 0,$alto, 0, 0,$grey);
  //realizamos la salida al navegador 
  imagepng ($im);
  imagedestroy($im);
  ?> 

Ahora veremos como hacerlo con un borde "doble"

Código PHP:

<?php
  header("Content-type: image/png");
  //definimos el tamaño de la imagen
  $alto = 60;
  $ancho = 150;
  $im = imagecreatetruecolor($ancho,$alto);
  //definimos algunos colores
  $grey = imagecolorallocate($im, 107,107,107);
  $white = imagecolorallocate($im, 255,255,255);
  //creamos un primer fondo liso
  imagefill($im,0,0,$white);
  //creamos los bordes
  imageline($im, 0,0, $ancho, 0,$grey);
  imageline($im, $ancho-1,0, $ancho-1, $alto, $grey);
  imageline($im, 0, $alto-1 , $ancho, $alto-1, $grey);
  imageline($im, 0,$alto, 0, 0,$grey);
// bordes internos
imageline($im, 2,2, $ancho-3, 2,$grey);
imageline($im, $ancho-3,2, $ancho-3, $alto-3, $grey);
imageline($im, 2, $alto-3 , $ancho-3, $alto-3, $grey);
imageline($im, 2,$alto-3, 2, 2,$grey);
 
//realizamos la salida al navegador 
imagepng ($im);
imagedestroy($im);
?> 

Como crear un borde con trazo no continuo (Ej: "- - - - - -")? si bien existe una funciona llamada imagedashedline definiendo styles es mucho mejor.

Código PHP:

<?php
  header("Content-type: image/png");
  //definimos el tamaño de la imagen
  $alto = 60;
  $ancho = 150;
  $im = imagecreatetruecolor($ancho,$alto);
  //definimos algunos colores
  $grey = imagecolorallocate($im, 107,107,107);
  $white = imagecolorallocate($im, 255,255,255);
  //creamos un primer fondo liso
  imagefill($im,0,0,$white);
  /*
  cada color es un pixel esto dara una linea punteada de 4 pixeles grises y 4 pixeles blancos
  */
  $style = array($grey,$grey, $grey, $grey, $white, $white, $white, $white);
  imagesetstyle($im, $style);  
  //creamos los bordes
  imageline($im, 0,0, $ancho, 0,IMG_COLOR_STYLED);
  imageline($im, $ancho-1,0, $ancho-1, $alto, IMG_COLOR_STYLED);
  imageline($im, 0, $alto-1 , $ancho, $alto-1, IMG_COLOR_STYLED);
  imageline($im, 0,$alto, 0, 0,IMG_COLOR_STYLED);
//realizamos la salida al navegador 
imagepng ($im);
imagedestroy($im);
?> 

--Nefertiter 23 Feb 2005

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales