Newsgroup: it.comp.www.php
Titolo: GD sostituzione zona foto

Vorrei fare una cosa che con .Net si fà con 3 istruzioni ma con php
non riesco a fare.
Sostituire una "zona" di una foto con un altra!
Ho una immagine jpg di una polaroid....individuo la zona interna (che
è inclinata) e dentro questo rettangolo incollo un altra foto.
L'effetto lo vedete qui nel mio blog  
www.martek.it/dblog
 se
aggiornate l'immagine dentro la polaroid cambia! (la pagina è asp ma
il source della img è aspx)
Per farlo devo individuare un rettangolo ruotato di x gradi e dentro
quello riempire con una immagine jpg.
in GD riesco a sovraimporre una immagine dentro l'altra ma non ruotata
nel senso che mi ruota l'immagine ma il box entro il quale ruota
l'immagine è sempre rettangolare.
Mentre io voglio una intera immagine ruotata di x gradi compreso il
box entro cui ruota
Le funzioni sono tutte del tipo x.y. lunghezza larghezza
mai del tipo coppia punto inizio coppia punto fine
mi scoccerebbe alquanto in un sito php dover invocare una pagina
aspx !
Grazie a chi mi illumina!

 non riesco a fare.
http://it.php.net/manual/en/function.imagerotate.php
Guarda il commento di simon_nuttall at hotmail dot com 27-Sep-2005 05:06
E forse anche quello di sjef at bosman dot fr 09-Aug-2009 04:28
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
I know exactly what you mean. Let me tell you why you're here. You're here
because you know something. What you know you can't explain. But you feel
it. You've felt it your entire life. That there's something wrong with the
world. You don't know what it is but it's there, like a splinter in your
mind driving you mad. It is this feeling that has brought you to me.
Do you know what I'm talking about?
    --Morpheus, "Matrix"

quello riempire con una immagine jpg.
Ti conviene fare in modo leggermente diverso: ruoti la polaroid in senso
opposto, dai un colpetto di sharpen e individui le coordinate della zona
rettangolare. Poi salvi in PNG, lasciando un bordo di due pixel, sfumato
in alpha. Questo lo fai con PhotoShop o altro, una volta per tutte.
A questo punto carichi la PNG con ImagePNG, metti il rettangolo preciso,
e poi ruoti tutto il risultato, ritagliando la zona centrale.
	ImageCreateFromPNG
	ImageCreateFromJPEG
	ImageCopyResampled
	ImageRotate
	ImageCopy
	ImageJPEG
In questo modo sposti l'aliasing dal bordo della foto, dove si nota, sul
bordo dell'immagine, dove si nota molto meno (e se e' sul bianco, non si
nota affatto).
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 On Mon, 25 Oct 2010 01:01:30 -0700 (PDT), "Wodka40[Google]"
grazie delle risposte....sigh.....che casino!
una elaborazione...elaborata....
Francamente credevo che le GD offrissero un po di più!
usare le
GDI+ di windows è enormemente più semplice!
....
        Dim myBmp As New Bitmap(dumContenitore)
        Dim myFill As New Bitmap(dumImmagine)
        Dim Gp As Graphics = Graphics.FromImage(myBmp)
        Dim Punti() As Point = {New Point(24, 55), New Point(223, 18),
New Point(59, 238)}
        Gp.DrawImage(myFill, Punti)
......
....siccome le immagini mi possono variare...quasi quasi mi conviene
agganciarlo come servizio web.
domanda....Aruba mi dà anche le Imagick...ma hanno poca
documentazione...potrei farci qualcosa con un po meno di
"impazzamento" con quella libreria?

 wrote:> On Mon, 25 Oct 2010 01:01:30 -0700 (PDT), "Wodka40[Google]"
utilizzando le scarse risorse del manuale
 <?php
//Creating two Imagick object
$first = new Imagick('images/polaroid.jpg');
$second = new Imagick('images/myfoto.png');
$second->rotateImage(new ImagickPixel(), 35);
//Second image is put on top of the first
$first->compositeImage($second, $second->getImageCompose(), 15,45);
//new image is saved as final.jpg
$first->writeImage('final.jpg');
?>
L'immagine viene aggiunta sopra ma ruotandola mi fa sempre il
rettangolo nero.
Leggendo fra forum ed affini....si dice che una strada è "Tagliare" la
zona nera ....uh!
Come si fa?....pfffff!
:)

 Francamente credevo che le GD offrissero un po di pi�!
Ma se fai la rotazione con un background trasparente e unisci le due immagini
tenendo conto della trasparenza non funziona?
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Got Mole problems? Call Avogadro 6.02 x 10^23

 Come si fa?....pfffff!
Ma non e` piu` semplice se prendi una polaroid dritta, ci copi sopra 
l'immagine dritta, e poi ruoti il risultato?
Meno di 10 righe, con gd.
Bye.

usare le GDI+ di windows � enormemente pi� semplice!
Una volta spremuti i neuroni la prima volta
<?php
	function polaroid($file, $caption = '')
	{
	        $png    = ImageCreateFromPNG('polaroid.png');
	        $paper  = ImageColorAllocate($png, 255, 255, 255);
       		$ink    = ImageColorAllocate($png,   0,   0,   0);
	        $img    = ImageCreateFromJPEG($file);
        	ImageCopyResampled($png, $img, 65, 58, 0, 0, 203, 177,
ImageSX($img), ImageSY($img));
        	ImageDestroy($img);
	        // Per scrivere sulla caption,
	        // ImageTTFText(...) in questo punto del workflow.
		// Consente di usare una qualunque font TTF.
	        $rot    = ImageRotate($png, 10, $paper, 1);
        	ImageDestroy($png);
        	$fin    = ImageCreateTrueColor(279, 285);
	        ImageCopy($fin, $rot, 0, 0, 50, 48, 279, 285);
        	ImageDestroy($rot);
		return $fin;
	}
?>
...ti basta scrivere
<?php
	$img	= polaroid('portada_original2.jpg', "Dark Water 2");
	Header("Content-Type: image/jpeg");
	ImageJPEG($fin, '', 85);
?>
Per un piccolo contributo di 5 EUR, ti posso dare io la "polaroid.png" gi�
pronta ]:-D
Leonardo
vaperqvovyr dhnagn tragr zhbin vy phyb dhnaqb y'nygreangvin r' fobefner ha
ovtyvrggbar qn ora pvadhr fitbfvffvzv rhev.
