(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
imagecopyresampled — Copia, redimensiona y reinterpolación de una imagen
$dst_image
,$src_image
,$dst_x
,$dst_y
,$src_x
,$src_y
,$dst_width
,$dst_height
,$src_width
,$src_height
imagecopyresampled() copia una zona
rectangular de la imagen src_im
hacia
la imagen dst_im
. Durante la copia,
la zona es reinterpolada para mantener la claridad
de la imagen durante una reducción.
En otras palabras, imagecopyresampled() 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 alturas y anchos de origen y destino
difieren, la imagen copiada será estirada de manera apropiada.
Las coordenadas son las del ángulo superior izquierdo.
imagecopyresampled() puede usarse para copiar
zonas de una imagen hacia sí misma, (si dst_image
es la misma que src_image
) pero si las regiones se
superponen, los resultados son impredecibles.
dst_image
Recurso de tipo enlace a la imagen de destino.
src_image
Recurso de tipo enlace a la imagen original.
dst_x
X: coordenadas del punto de destino.
dst_y
Y: coordenadas del punto de destino.
src_x
X: coordenadas del punto origen.
src_y
Y: coordenadas del punto origen.
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 Ejemplo simple
Este ejemplo redimensiona una imagen a la mitad de su tamaño original.
<?php
// El archivo
$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);
$new_width = $width * $percent;
$new_height = $height * $percent;
// Redimensionamiento
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Mostrar
imagejpeg($image_p, null, 100);
?>
El resultado del ejemplo sería algo similar a:
Ejemplo #2 Redimensionamiento proporcional de una imagen
Este ejemplo mostrará una imagen con un ancho o altura máxima de 200 píxeles.
<?php
// El archivo
$filename = 'test.jpg';
// Definición del ancho y altura máxima
$width = 200;
$height = 200;
// Tipo de contenido
header('Content-Type: image/jpeg');
// Cálculo de las nuevas dimensiones
list($width_orig, $height_orig) = getimagesize($filename);
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// Redimensionamiento
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Mostrar
imagejpeg($image_p, null, 100);
?>
El resultado del ejemplo sería algo similar a:
Nota:
Existe un problema debido a las limitaciones del tamaño de la paleta (255 + 1 colores diferentes). Filtrar o reinterpolar una imagen requiere más de 255 colores, entonces se usa una aproximación para calcular el nuevo número de colores. Con una paleta, si un nuevo color no puede ser asignado, se usa el color más cercano (en teoría). Esto no siempre es el color más cercano visualmente. Esto puede generar problemas extraños, como imágenes blancas. Para evitar este problema, convierta la imagen a TrueColor, como la generada por la función imagecreatetruecolor().