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
Maschere per estrarre e trasferire
maschere di ogni foormato


e-book
cartaceo
Centro X Y
maschera:
Raggi X Y
maschera:
Nuova posizione X Y
con imagecopyresampled:
Ingrandimento/riduzione
immagine sovrapposta:
GradiStart: GradiEnd: Con GD Gradi 0 sono a ore 3  
Cambiare i valori e premere
Origine Maschera Estratto da origine con maschera
 
Nuovo fondo immagine Risultato con imagecopyresampled  

Nella grafica al PC, maschera è la selezione di parte di un'immagine isolandola dal resto del contesto, ovvero, creare maschere opache per proteggere lo sfondo e modificare il soggetto oppure l'inverso.


Facendo uso di una maschera viene prelevata una porzione ovale da un'immagine (panorama di Firenze) e con questa creata una immagine nuova dove la porzione ovale precedente è su fondo trasparente. 
Al posto dell'ovale può essere usata una qualsiasi altra figura chiusa.
Questa immagine viene poi copiata su di una mappa della Toscana in un punto a scelta, eventualmente cambindone le dimensioni. 
 
L'operazione è fatta in 2 funzioni:
ApplicaMaschera(), dove applicando la maschra viene estratta la parte che interessa
CopiaEstrattoCon_imagecopyresampled(), dove viene copiato l'estratto precedente sull'immagine finale.


Le varabili interessata sono:
$Cx, $Cx, centro X,Y della maschera
$RaggioX, $RaggioY, dimensione orizzontale e verticale della maschera
$GradiStart, $GradiEnd, punti di inizio e termine dell'arco prelevato per la maschera
$imagecopyresampledX, $imagecopyresampledY, punto X,Y dell'immagine finale dove verrà coopiato il contenuto della maschera
$IngrandimentoRiduzione, dimensioni della maschra copiata, 1 corrisponte alle dimensioni d'origine


Le immagini usate nello script sono:
Firenze.png, letta da supporto fisico e dalla quale estratta un porzione. 
Toscana.png, letta da supporto fisico, su essa sarà copiata, in un punto a scelta, la porzione estratta.


<?php
$Cx = isset($_POST['Cx']) ? $_POST['Cx'] : 160; 
$Cy = isset($_POST['Cy']) ? $_POST['Cy'] : 120;
$RaggioX = isset($_POST['RaggioX']) ? $_POST['RaggioX'] : 200; 
$RaggioY = isset($_POST['RaggioY']) ? $_POST['RaggioY'] : 150; 
$GradiStart = isset($_POST['GradiStart']) ? $_POST['GradiStart'] : 150; 
$GradiEnd = isset($_POST['GradiEnd']) ? $_POST['GradiEnd'] : 30; 
$imagecopyresampledX = isset($_POST['imagecopyresampledX']) ? $_POST['imagecopyresampledX'] : 0; 
$imagecopyresampledY = isset($_POST['imagecopyresampledY']) ? $_POST['imagecopyresampledY'] : 0;
$IngrandimentoRiduzione=isset($_POST['IngrandimentoRiduzione'])?$_POST['IngrandimentoRiduzione']:1;


function ApplicaMaschera(&$Imma_Firenze, $Imma_Maschera, $Larghezza, $Altezza, $RaggioX,$RaggioY){


// nuova immagine dimensioni $Imma_Firenze
$Imma_FirenzeNEW = imagecreatetruecolor($Larghezza, $Altezza);
$TrasparenzaAlpha = imagecolorallocatealpha($Imma_FirenzeNEW,0,0,0,127 );// colore trasparente
imagesavealpha($Imma_FirenzeNEW, true); // salvataggio con trasparenza
imagefill($Imma_FirenzeNEW,0,0,$TrasparenzaAlpha); // rende l'immagine trasparente
for($x = 0; $x < $Larghezza; $x++ ){// legge pixel per pixel l'immagine $Imma_Maschera 
for($y = 0; $y < $Altezza; $y++ ){


// risultato del pixel $alpha
$alpha = imagecolorsforindex($Imma_Maschera, imagecolorat($Imma_Maschera, $x, $y)); 
$alpha = 127 - floor( $alpha[ 'red' ] / 2 ); // opacità necessaria per $Imma_FirenzeNEW


// inserisce nell'array $color
$color = imagecolorsforindex($Imma_Firenze, imagecolorat($Imma_Firenze, $x, $y)); 


// alloca i colori con i dati letti alla riga precedente, qui può essere applicato un filtro colore
// ad esempio $color[ 'blue' ]>>1 per darle un effetto di antico
$K = imagecolorallocatealpha($Imma_FirenzeNEW, $color[ 'red' ], $color[ 'green' ], $color[ 'blue' ], $alpha );
imagesetpixel($Imma_FirenzeNEW, $x, $y, $K); // scrive i nuovi dati
}}


// libera memoria e prosegue il ciclo
imagedestroy( $Imma_Firenze );$Imma_Firenze = $Imma_FirenzeNEW;
}
function CopiaEstrattoCon_imagecopyresampled($Imma_Firenze,
$XX,$YY,
$RaggioX,$RaggioY, 
$Cx , $Cy,
$imagecopyresampledX,$imagecopyresampledY,
$IngrandimentoRiduzione)
{


imagepng($Imma_Firenze,"es_126_CopiaEstrattoCon_imagecopyresampled.png");// salva+++++
$Imma_Toscana = imagecreatefrompng('Toscana.png');// carica immagine della Toscana
imagesavealpha($Imma_Toscana, true); // salvataggio con trasparenza


// dimensioni immagine da sovrapporre  
$Imma_FirenzeX = imagesx ($Imma_Firenze);$Imma_FirenzeY = imagesy ($Imma_Firenze);


$XX = $RaggioX/2 - $Cx; // distanza zero margine sinistro
$YY = $RaggioY/2 - $Cy; // distanza zero dal margine superiore
$XX = $XX + $imagecopyresampledX; // posizione orizzontale dove visualizzare estratto 
$YY = $YY + $imagecopyresampledY; // posizione verticale dove visualizzare estratto


// copia estratto da Firenze su mappa della Toscana
imagecopyresampled($Imma_Toscana , $Imma_Firenze , 
$XX * $IngrandimentoRiduzione, $YY * $IngrandimentoRiduzione, // x,y destinazione
0 , 0 , // x,y sorgente
$Imma_FirenzeX * $IngrandimentoRiduzione, $Imma_FirenzeY * $IngrandimentoRiduzione,
$Imma_FirenzeX, $Imma_FirenzeY // larghezza, altezza sorgente 
);
$Nero = imagecolorallocate($Imma_Toscana,0,0,0);
imagestring($Imma_Toscana ,4,10,200,"Imma_Firenze =".$Imma_FirenzeX."x".$Imma_FirenzeY , $Nero );
imagestring ($Imma_Toscana , 4 , 10 , 220 , "Raggi X,Y = ".$RaggioX."x".$RaggioY , $Nero );
imagestring ($Imma_Toscana , 4 , 10 , 240 , "Centro X,Y = ".$Cx."x".$Cy , $Nero );
imagepng($Imma_Toscana,"Toscana_Firenze_imagecopyresampled.png");// salva+++++
}


// carica immagine esistente sulla quale verrà applicata la maschera
$Imma_Firenze = imagecreatefrompng('es_126_Firenze.png');
$Larghezza = imagesx($Imma_Firenze);$Altezza = imagesy($Imma_Firenze); // preleva le dimensioni
$Imma_Maschera = imagecreatetruecolor($Larghezza, $Altezza);// crea maschera stesse dimensioni
$Viola = imagecolorallocate($Imma_Maschera, 255, 0, 255);// colore opaco per l'ellisse


// crea zona dove avverrà la copia del particolare di $Imma_Firenze
imagefilledarc($Imma_Maschera , 
$Cx , $Cy , 
$RaggioX , $RaggioY ,
$GradiStart , $GradiEnd , 
$Viola ,
IMG_ARC_PIE 
);
imagepng($Imma_Maschera,"A_Maschera.png");// salva maschera++++
ApplicaMaschera($Imma_Firenze, $Imma_Maschera, 
$Larghezza, $Altezza,
$RaggioX,$RaggioY
);// Applica la maschera


$XX = 0; // distanza dal margine sinistro della parte prelevata
$YY = 0; // distanza dal margine superiore della parte prelevata


CopiaEstrattoCon_imagecopyresampled($Imma_Firenze,
$XX,$YY,
$RaggioX,$RaggioY, 
$Cx , $Cy,
$imagecopyresampledX,$imagecopyresampledY,
$IngrandimentoRiduzione
);


imagepng($Imma_Firenze,"NomeFile.png");// salva
imagedestroy($Imma_Maschera);// libera memoria
?>