imagecopyresampled

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecopyresampledCopia, redimensiona y reinterpolación de una imagen

Descripción

imagecopyresampled(
    GdImage $dst_image,
    GdImage $src_image,
    int $dst_x,
    int $dst_y,
    int $src_x,
    int $src_y,
    int $dst_width,
    int $dst_height,
    int $src_width,
    int $src_height
): bool

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.

Parámetros

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.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Historial de cambios

Versión Descripción
8.0.0 dst_image y src_image ahora esperan instancias de GdImage; anteriormente, se esperaban resources.

Ejemplos

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:

imagecopyresampled.jpg

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:

Visualización del ejemplo: Reinterpolación de una imagen proporcionalmente

Notas

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().

Ver también

  • imagecopyresized() - Copia y redimensiona una parte de una imagen
  • imagescale() - Redimensiona una imagen utilizando una altura y una anchura proporcionadas
  • imagecrop() - Recorta una imagen en el rectángulo dado