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
Ribaltare immagini con imagecopyresampled()
Superare le limitazioni di imageflip()


e-book
cartaceo

La funzione imageflip() ha limitazioni con le immagini che usano il canale Alpha.
Questa limitazione può essere superata usando la funzione imagecopyresampled() che permette di leggere copiando l'immagine sorgente con valori negativi, e perciò invertendone i contenuti.


L'esempio seguente esegue il ribaltamento di immagini trecolor con imagecopyresampled(). 
Il lavoro viene svolto all'interno della funzione RibaltamentoImmagine()  che riceve la variabile $metodocon nella quale è specificato il metodo di ribaltamento.
La variabile $metodo può contenere una delle seguenti lettere 'o' , 'v', 'e' rispettivamente per orizzontale, verticale, entrambi.


Invocata la funzione viene caricata l'immagine Imma_png24_traspar_Alpha.png che viene ribaltata in base al contenuto della variabile $metodo . 


La funzione viene chiamata tre volte con ciascuno dei tre contenuti possibili della variabile $metodo .
Le immagini ribaltate sono salvate su disco e l'ultima messa a video.


<?php
function RibaltamentoImmagine($metodo){
// recupera ammagine da ribaltare
$Imma_sorg = imagecreatefrompng('Imma_png24_traspar_Alpha.png');
// recupera dimensioni immagine sorgente che saranno uguali all'immagine di destinazione
$Larg_sorg = imagesx ($Imma_sorg); $Alt_sorg = imagesy ($Imma_sorg);


// larghezza sorgente è uguale a quella della destinazione
$Larg_dest = $Larg_sorg; $Alt_dest = $Alt_sorg;
// crea immagine di destinazione
$Imma_Dest = imagecreatetruecolor ( $Larg_dest, $Alt_dest );


// setta l'immagine per il salvataggio con trasparenza
imagecolortransparent($Imma_Dest,imagecolorallocatealpha($Imma_Dest,0,0,0,127));
imagealphablending($Imma_Dest,false);
imagesavealpha($Imma_Dest,true);


// setta i dati per il tipo di ribaltamento
$X_sorg = 0; $Y_sorg = 0;
switch($metodo){
case 'o': $X_sorg = $Larg_dest -1; $Larg_sorg = -$Larg_dest;break; // orizontale
case 'v': $Y_sorg = $Alt_dest -1; $Alt_sorg = -$Alt_dest;break; //verticale
case 'e':$X_sorg = $Larg_dest -1; $Larg_sorg = -$Larg_dest;
$Y_sorg = $Alt_dest -1; $Alt_sorg = -$Alt_dest;
break; //entrambi
}


// esegue la funzione di ribaltamento
imagecopyresampled($Imma_Dest,$Imma_sorg,
0,0,
$X_sorg,$Y_sorg,
$Larg_dest,$Alt_dest,
$Larg_sorg,$Alt_sorg
);


imagepng($Imma_Dest,"NomeFile_Ribaltare_con_imagecopyresampled_trasparenzaAlpha_".$metodo.".png");
imagepng($Imma_Dest); // al browser
imagedestroy($Imma_sorg);imagedestroy($Imma_Dest); // libera memoria
};
$metodo = "o"; RibaltamentoImmagine($metodo); // ribalta orizzontale
$metodo = "v"; RibaltamentoImmagine($metodo); // ribalta verticale
$metodo = "e"; RibaltamentoImmagine($metodo); // ribalta orizzontale e verticale
?> Risultato: