Data un'immagine sorgente, ne copia una parte rettangolare ridimensionandola.
Questa copia viene poi riprodotta su di una nuova immagine o sulla stessa immagine sorgente in un punto x,y a scelta.
Le coordinate x,y sono, come al solito, quelle dall'angolo superiore sinistro.
Larghezza ed Altezza possono avere anche valori negativi, questo permette di ribaltare le immagini come è possibile fare con la funzioni
imageflip() che però ha problemi quando l'immagine usa il canale Alpha.
Vedere il capitolo Ribaltare immagini con
imagecopyresampled()
imagecopyresampled() esegue lo stesso compito di
imagecopyresized() producendo generalmente risultati migliori seppur con maggior lavoro della CPU.
imagecopyresampled ( resource $Immagine_destinazione, resource $Immagine_Origine,
int $PuntoDestinazioneX, int $PuntoDestinazioneY,
int $PuntoCopiaX, int $PuntoCopiaY,
int $largezzaNEW , int $altezzaNEW,
int $LarghezzaCopia, int $AltezzaCopia)
Parametri
$Immagine_destinazione: Immagine destinazione.
$Immagine_Origine: Immagine da copiare.
$PuntoDestinazioneX: Coordinata X di destinazione.
$PuntoDestinazioneY: Coordinata Y di destinazione.
$PuntoCopiaX: Coordinata X d'origine.
$PuntoCopiaY: Coordinata Y d'origine.
$largezzaNEW: Larghezza in pixel della destinazione.
$altezzaNEW: Altezza in pixel della destinazione.
$LarghezzaCopia: Larghezza in pixel della copia d'origine.
$AltezzaCopia: Altezza in pixel della copia d'origine
<?php // es_46_
imagecopyresampled
$PuntoCopiaX = isset($_POST['PuntoCopiaX']) ? $_POST['PuntoCopiaX'] : 5;
$PuntoCopiaY = isset($_POST['PuntoCopiaY']) ? $_POST['PuntoCopiaY'] : 0;
$LarghezzaCopia = isset($_POST['LarghezzaCopia']) ? $_POST['LarghezzaCopia'] : 60;
$AltezzaCopia = isset($_POST['AltezzaCopia']) ? $_POST['AltezzaCopia'] : 60;
$percentualeVariazione = isset($_POST['percentualeVariazione']) ? $_POST['percentualeVariazione'] : 1.8;
$NomeFile = 'smiley.jpg';// carica il file
//$percentualeVariazione = 1.8; //definisce la percentuale di variazione,se superiore 1 ingrandisce
// legge dimensioni dell'immagine
$infoImage =
getimagesize($NomeFile);
//echo "larghezza = ".$infoImage[0]; // larghezza
//echo "altezza = ".$infoImage[1]; // altezza
// calcola ingrandimento o riduzione
$largezzaNEW = $LarghezzaCopia * $percentualeVariazione;
$altezzaNEW = $AltezzaCopia * $percentualeVariazione;
// misure per il centraggio dell'immagine
$PuntoDestinazioneX = ($infoImage[0]- $largezzaNEW)/2;
$PuntoDestinazioneY = ($infoImage[1] - $altezzaNEW) /2;
// costruisce immagine per adesso vuota
$Immagine_destinazione =
imagecreatetruecolor($largezzaNEW, $altezzaNEW);
// immagine originaria 'smiley.jpg' come destinazione
$Immagine_destinazione =
imagecreatefromjpeg($NomeFile);
$Immagine_Origine =
imagecreatefromjpeg($NomeFile);
// a questo punto $Immagine_destinazione e $Immagine_destinazione sono identiche
// esegue la funzione
imagecopyresampled($Immagine_destinazione, $Immagine_Origine,
$PuntoDestinazioneX, $PuntoDestinazioneY,
$PuntoCopiaX, $PuntoCopiaY,
$largezzaNEW, $altezzaNEW,
$LarghezzaCopia, $AltezzaCopia
);
//header('Content-Type: image/jpeg');
//
imagejpeg($Immagine_destinazione); // per il browser
imagejpeg($Immagine_destinazione, "es_46_
imagecopyresampled.jpg"); // salva file
imagedestroy($Immagine_destinazione);
?>
<!doctype html><html><head><meta charset="utf-8"></head><body>
<img src="es_46_
imagecopyresampled.jpg">
</body></html>
Risultato: