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
Bandiere al vento
Distorgere immagini


e-book
cartaceo
Alterazioni :
Cambiare i valori e premere
Bandiera al vento

Considerando l'immagine una matrice bidimensionale di pixel, è possibile riorganizzarla liberamente. 
Un modo è quello di creare nuove immagini applicandovi distorsioni che abbiano una qualche utilità.


Nello script, viene caricata in memoria un'immagine sorgente già esistente con raffigurata una bandiera.
Ne vengono lette le dimensioni e con quelle creata un'immagine $Risultato vuota e trasparente.
Sono poi letti, uno per uno, i pixel dell'immagine sorgente, calcolata una distorsione, e quindi, questo valore, scritto nell'immagine $Risultato.


<?php 
function EffettoVento($Immagine){


// dimensioni immagine
$Larghezza = imagesx($Immagine); $Altezza = imagesy($Immagine);


$Risultato = imagecreatetruecolor($Larghezza,$Altezza); // immagine vuota delle stesse dimensioni
$CanaleAlpha = imagecolorallocatealpha($Risultato, 0, 0, 0, 127);
imagefill($Risultato, 0, 0, $CanaleAlpha); 
imagealphablending( $Risultato,false);
imagesavealpha($Risultato, true); // salva con trasparenza
for ($x = 0; $x < $Larghezza; $x++) {// scansione immagine sorgente
for ($y = 0; $y < $Altezza; $y++) {
$rgba = imagecolorsforindex($Immagine, imagecolorat($Immagine, $x, $y));// legge pixel


// alloca colore con dati letti nel pixel
$Colore = imagecolorallocatealpha($Risultato,$rgba["red"], $rgba["green"], $rgba["blue"], $rgba["alpha"]);


// applica distorsione su asse y
$DistrorsioneY = ($y + round(15*cos($x/75)) + $Altezza) % $Altezza;
imagesetpixel($Risultato, $x, $DistrorsioneY, $Colore); // scrive i pixel nell'immagine $Risultato
}}
header("Content-type: image/png");
imagepng($Risultato,"NomeFile.png"); // salva immagine
imagepng($Risultato); // al browser
}


$Immagine = imagecreatefrompng('bandiera.png'); // carica immagine
EffettoVento($Immagine); // modifica immagine
imagedestroy($Immagine); imagedestroy($Risultato);// libera memoria
?>