(PHP 4, PHP 5, PHP 7, PHP 8)
imagecopyresized — Copia y redimensiona una parte de una imagen
$dst_image
,$src_image
,$dst_x
,$dst_y
,$src_x
,$src_y
,$dst_width
,$dst_height
,$src_width
,$src_height
imagecopyresized() copia una parte rectangular de una imagen
en otra imagen de destino. dst_image
es la
imagen de destino, src_image
es la imagen fuente.
En otras palabras, imagecopyresized() tomará una
forma rectangular src_image
de un ancho de
src_width
y una altura src_height
en la posición (src_x
,src_y
)
y la colocará en una zona rectangular dst_image
de un ancho de dst_width
y una altura de
dst_height
en la posición
(dst_x
,dst_y
).
Si las dimensiones de la fuente y el destino no son iguales, se realiza
un estiramiento adecuado para hacer coincidir
las dos. Las coordenadas proporcionadas se definen
en relación con la esquina superior izquierda. Esta función puede ser
utilizada para copiar regiones dentro
de una misma imagen (si dst_image
y
src_image
son idénticas), pero si las
regiones se superponen, el resultado podría ser
inconsistente.
dst_image
Recurso de tipo enlace a la imagen de destino.
src_image
Recurso de tipo enlace a la imagen original.
dst_x
X: coordenada del punto de destino.
dst_y
Y: coordenada del punto de destino.
src_x
X: coordenada del punto fuente.
src_y
Y: coordenada del punto fuente.
dst_width
Ancho del destino.
dst_height
Altura del destino.
src_width
Ancho original.
src_height
Altura original.
Versión | Descripción |
---|---|
8.0.0 |
dst_image y src_image
ahora esperan instancias de GdImage;
anteriormente, se esperaban resources.
|
Ejemplo #1 Redimensionamiento de una imagen
Este ejemplo mostrará la imagen redimensionada a la mitad de su tamaño original.
<?php
// Archivo y nuevo tamaño
$filename = 'test.jpg';
$percent = 0.5;
// Tipo de contenido
header('Content-Type: image/jpeg');
// Cálculo de las nuevas dimensiones
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// Carga
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// Redimensionamiento
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Mostrar
imagejpeg($thumb);
?>
El resultado del ejemplo sería algo similar a:
La imagen mostrada tendrá la mitad del tamaño de la imagen original, pero una mejor calidad puede obtenerse utilizando la función imagecopyresampled().
Nota:
Existe un problema debido a las limitaciones del tamaño de la paleta (255 + 1 colores diferentes). Filtrar o reescalar una imagen requiere más de 255 colores, entonces se utiliza una aproximación para calcular el nuevo número de colores. Con una paleta, si un nuevo color no puede ser asignado, se utiliza el color más cercano (en teoría); esto no siempre es el más cercano visualmente. Esto puede generar problemas extraños, como imágenes blancas. Para evitar este problema, convierta a imágenes TrueColor, como las generadas por la función imagecreatetruecolor().