(PHP 4, PHP 5, PHP 7)
imagecopyresized — Copia y cambia el tamaño de parte de una imagen
$dst_image
, resource $src_image
, int $dst_x
, int $dst_y
, int $src_x
, int $src_y
, int $dst_w
, int $dst_h
, int $src_w
, int $src_h
)
imagecopyresized() copia una porción
de una imagen a otra imagen.
dst_image
es la imagen de destino,
src_image
es el identificador de la imagen de origen.
En otras palabras, imagecopyresized() tomará un
área rectangular de src_image
de ancho
src_w
y alto src_h
en la
posición (src_x
,src_y
)
y la colocará en un área rectangular de dst_image
de ancho dst_w
y alto dst_h
en la posición (dst_x
,dst_y
).
Si las coordenadas de origen y destino y los anchos y altos
difieren, se llevará a cabo la ampliación o reducción apropiadas del fragmento
de la imagen. Las coodernadas se refiren a la esquina superior
izquierda. Esta función se puede usar para copiar regiones dentro de la
misma imagen (si dst_image
es el mismo que
src_image
) pero si las regiones se traslapan el
resultado será impredecible.
dst_image
Recurso de tipo enlace a la imagen de destino.
src_image
Recurso de tipo enlace a la imagen original.
dst_x
Coordenada x del punto de destino.
dst_y
Coordenada y del punto de destino.
src_x
Coordenada x del punto de origen.
src_y
Coordenada y del punto de origen.
dst_w
Ancho del destino.
dst_h
Alto del destino.
src_w
Ancho original.
src_h
Altura original.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Ejemplo #1 Cambiar el tamaño de una imagen
Este ejemplo mostrará la imagen a mitad de tamaño.
<?php
// Fichero y nuevo tamaño
$nombre_fichero = 'prueba.jpg';
$porcentaje = 0.5;
// Tipo de contenido
header('Content-Type: image/jpeg');
// Obtener los nuevos tamaños
list($ancho, $alto) = getimagesize($nombre_fichero);
$nuevo_ancho = $ancho * $porcentaje;
$nuevo_alto = $alto * $porcentaje;
// Cargar
$thumb = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$origen = imagecreatefromjpeg($nombre_fichero);
// Cambiar el tamaño
imagecopyresized($thumb, $origen, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
// Imprimir
imagejpeg($thumb);
?>
El resultado del ejemplo sería algo similar a:
La imagen se imprimirá a mitad de tamaño, aunque se puede obtener una mejor calidad usando imagecopyresampled().
Nota:
Hay un problema debido a las limitaciones de la imagen de paleta (255+1 colores). Redimensionar o filtrar una imagen normalmente necesita más de 255 colores, por lo que se usa un tipo de aproximación para calcular el nuevo píxel redimensionado y su color. Con una imagen de paleta se trata de asignar un color nuevo, y si falló, se escoge el color computado más próximo (en teoría). Éste no es siempre el color visual más próximo. Puede producir un resultado extraño, como imágenes en blanco (o visualmente en blaco). Para evitar este problema, por favor use una imagen de color verdadero como imagen de destino, como una creada por imagecreatetruecolor().
imagecopyresampled() - Copia y cambia el tamaño de parte de una imagen redimensionándola