Utilizzo di cookies
Script GD libray con PHP Modelli Creare immagine Colore e trasparenza Disegnare Pennelli Misurare Filtri Testo Copy Salvare Miscellanea
GD library con PHP
imagecopyresampled()
copia ridimensiona immagini con ricampionamento


e-book
cartaceo
es_46_imagecopyresampled
Punti di copia:
X: Y:
Dimensione copia in pixel:
Larghezza: Altezza:
Variazione in %
Cambiare i valori e premere
imagecopyresampled esempio dinamico

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: