imagecopyresampled
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
imagecopyresampled — Copia e redimensiona parte de uma imagem com reamostragem
Descrição
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 uma porção retangular de uma imagem em outra imagem, suavemente interpolando valores de pixels de forma que, em particular, a redução do tamanho de uma imagem ainda retenha bastante clareza.
Em outras palavras, imagecopyresampled() pegará
uma área retangular de src_image
, de largura
src_width
e altura src_height
na
posição (src_x
,src_y
),
e posicionará esta área em uma outra área retangular de dst_image
,
de largura dst_width
e altura dst_height
,
na posição (dst_x
,dst_y
).
Se as coordenadas de origem e destino e larguras e alturas
forem diferentes, um alongamento ou um encolhimento apropriado do fragmento da imagem
será realizado. As coordenadas se referem ao canto superior
esquerdo. Esta função pode ser usada para copiar regiões dentro da
mesma imagem (se dst_image
for igual a
src_image
) mas se as regiões se sobrepuserem, os
resultados serão imprevisíveis.
Parâmetros
dst_image
-
Recurso da imagem de destino.
src_image
-
Recurso da imagem de origem.
dst_x
-
Coordenada x do ponto de destino.
dst_y
-
Coordenada y do ponto de destino.
src_x
-
Coordenada x do ponto de origem.
src_y
-
Coordenada y do ponto de origem.
dst_width
-
Largura do destino.
dst_height
-
Altura do destino.
src_width
-
Largura da imagem de origem.
src_height
-
Altura da imagem de origem.
Registro de Alterações
Versão | Descrição |
---|---|
8.0.0 |
dst_image e src_image esperam
instâncias GdImage agora; anteriormente, resources
eram esperadas.
|
Exemplos
Example #1 Exemplo simples
Este exemplo irá reamostrar uma imagem para metade de seu tamanho original.
<?php
// O arquivo
$filename = 'test.jpg';
$percent = 0.5;
// Tipo de conteúdo
header('Content-Type: image/jpeg');
// Obtém novas dimensões
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// Reamostra
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Mostra
imagejpeg($image_p, null, 100);
?>
O exemplo acima produzirá algo semelhante a:
Example #2 Reamostrando uma imagem proporcionalmente
Este exemplo irá mostrar uma imagem com a largura e altura máximas de 200 pixels.
<?php
// O arquivo
$filename = 'test.jpg';
// Define altura e largura máximas
$width = 200;
$height = 200;
// Tipo de conteúdo
header('Content-Type: image/jpeg');
// Obtém novas dimensões
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;
}
// Reamostra
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Mostra
imagejpeg($image_p, null, 100);
?>
O exemplo acima produzirá algo semelhante a:
Notas
Note:
Existe um problema devido a limitações de imagem de paleta (255+1 cores). A reamostragem ou a filtragem de uma imagem normalmente precisa de mais cores que 255, um tipo de aproximação é usada para calculara o novo pixel reamostrado e sua cor. Com imagem de paleta tenta-se alocar uma nova cor, se isso falhar, escolhe-se a cor computada mais próxima (em teoria). Isto nem sempre é a cor mais próxima visualmente. Isto pode produzir um resultado estranho, tal como imagem vazia (ou visualmente vazia). Para evitar esse problema, favor utilizar uma imagem em cores verdadeiras como imagem de destino, tal como a criada por imagecreatetruecolor().
Veja Também
- imagecopyresized() - Copia e redimensiona parte de uma imagem
- imagescale() - Muda a escala de uma imagem usando largura e altura informadas
- imagecrop() - Recorta uma imagem no retângulo informado