Copia tutta o parte di un'immagine su di un'altra cambiandole dimensioni.
Di solito è opportuno creare un'immagine nuova delle dimensioni necessarie per ricevere il risultato della copia sull'immagine sorgente.
Per es. se dall'immagine sorgente viene copiato un particolare da ingrandire o ridurre di 3 volte, su queste nuove dimensioni dovrà essere creata l'immagine, per poi copiarci il particolare.
L'algoritmo di questa funzione tende a produrre risultati imperfetti, la più recente funzione
imagecopyresampled() esegue lo stesso compito producendo generalmente risultati migliori seppur con maggior lavoro della CPU.
imagecopyresized(resource $ImmaNEW, resource $ImmaSorgente,
int $x1, int $y1,
int $x2, int $y2,
int $LargNEW, int $AlteNEW,
int $Larg, int $Alte);
Parametri
$ImmaNEW: Immagine di destinazione.
$ImmaSorgente: Immagine della quale verrà prelevata una parte.
$x1, $y1: coordinata x,y su $ImmaNEW
$x2, $y2: coordinata x,y del punto di origine lettura da $ImmaSorgente
$LargNEW, $AlteNEW: Nuova Larghezza e altezza di porzione immagine letta da $ImmaSorgente
$Alte, $Larg: Larghezza e Altezza di porzione immagine letta da $ImmaSorgente
Nell'esempio seguente viene copiata la testa della statua del David e incollata in una nuova immagine ingendendola di 3 volte.
<?php
$ImamgineSorgente =
imagecreatefromjpeg('David.jpg');
$DistanzaDaX = 120; $DistanzaDaY = 8; // distanza del volto dall'amgolo x=0-y=0
$LarghezzaViso = 68; $AltezzaViso = 70; // dimensioni del particolare da ingrandire
$PercentualeVariazione = 2.5; // percentuale di modifica del particolare dell'immagine
// calcola le nuove misure
$AltezzaNEW = $AltezzaViso * $PercentualeVariazione;
$LarghezzaNEW = $LarghezzaViso * $PercentualeVariazione;
// crea nuova immagine risultato della $PercentualeVariazione che per adesso è vuota
$ImmagineRisultato =
imagecreatetruecolor($LarghezzaNEW, $AltezzaNEW);
// copia sulla nuova immagine, , il particolare ridimensionandolo
imagecopyresized($ImmagineRisultato, $ImamgineSorgente,
0, 0,
$DistanzaDaX, $DistanzaDaY,
$LarghezzaNEW, $AltezzaNEW,
$LarghezzaViso, $AltezzaViso);
header('Content-Type: image/jpeg');
imagejpeg($ImmagineRisultato); // al browser
imagejpeg($ImmagineRisultato,"NomeFile.jpg"); // salva
// libera memoria
imagedestroy($ImamgineSorgente); imagedestroy($ImmagineRisultato);
?>
Risultato: