# imagecopyresampled

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

imagecopyresampled — Copia y cambia el tamaño de parte de una imagen redimensionándola

### Descripción

imagecopyresampled(
resource `$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`
): bool

imagecopyresampled() copia una porción rectangular de una imagen a otra imagen, interpolando de manera suave los valores de los píxeles por lo que, particularmete, al reducir el tamaño de una imagen, ésta todavía conserva mucha nitidez.

En otras palabras, imagecopyresampled() 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 coloca 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 del origen y destino y los anchos y altos difieren, se llevará a cabo la ampliación o reducción 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.

### 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`

  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.

### Valores devueltos

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

### Ejemplos

Ejemplo #1 Ejemplo sencillo

Este ejemplo redimensionará una imagen a la mitad de su tamaño original.

`<?php
// El archivo
$nombre_archivo = 'prueba.jpg';
$porcentaje = 0.5;
// Tipo de contenido
header('Content-Type: image/jpeg');
// Obtener nuevas dimensiones
list($ancho, $alto) = getimagesize($nombre_archivo);
$nuevo_ancho = $ancho * $porcentaje;
$nuevo_alto = $alto * $porcentaje;
// Redimensionar
$imagen_p = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen = imagecreatefromjpeg($nombre_archivo);
imagecopyresampled($imagen_p, $imagen, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
// Imprimir
imagejpeg($imagen_p, null, 100);
?>`

El resultado del ejemplo sería algo similar a:

Ejemplo #2 Redimensionar una imagen proporcionalmente

Este ejemplo mostrará una imagen con el ancho, o alto, máximo de 200 píxeles.

`<?php
// El archivo
$nombre_archivo = 'prueba.jpg';
// Establecer un ancho y alto máximo
$ancho = 200;
$alto = 200;
// Tipo de contenido
header('Content-Type: image/jpeg');
// Obtener las nuevas dimensiones
list($ancho_orig, $alto_orig) = getimagesize($nombre_archivo);
$ratio_orig = $ancho_orig/$alto_orig;
if ($ancho/$alto > $ratio_orig) {
$ancho = $alto*$ratio_orig;
} else {
$alto = $ancho/$ratio_orig;
}
// Redimensionar
$image_p = imagecreatetruecolor($ancho, $alto);
$image = imagecreatefromjpeg($nombre_archivo);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $ancho, $alto, $ancho_orig, $alto_orig);
// Imprimir
imagejpeg($image_p, null, 100);
?>`

El resultado del ejemplo sería algo similar a:

### Notas

> 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, se usa un tipo de aproximación para calcular el nuevo píxel redimensionado y su color. Con una imagen de paleta tratamos de asignar un color nuevo, si falló, escogemos 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 blaco (o visualmente en blaco). Para saltarse este problema, por favor use una imagen de color verdadero como imagen de destino, como una creada por imagecreatetruecolor().

### Ver también

imagecopyresized() - Copia y cambia el tamaño de parte de una imagen