Newsgroup: it.comp.www.php
Titolo: Aggiungere logo in trasparenza ad immagine

Buongiorno a tutti,
ho il seguente codice, per visualizzare delle immagini prelevate da un
database MYSQL:
 
..            
$risultato = mysql_query("select image from anagrafica where (codice = ".
$_GET['codice'].") limit 1;",$connessione) or   					    
die("<br>Impossibile prelevare l'immagine");
 
$riga = mysql_fetch_row($risultato);
 
header ('Content-type: image/png');
echo $riga[0];
.....
 
vorrei pero' modificare l'immagine, inserendo una scritta o il 
logo dell'azienda in trasparenza, sapete darmi qualche dritta?
 
-- 
www.ferramentatodisco.it
 
Rivenditore Milwaukee, Aeg, Usag, Elematic, Rover, Krino.
 

logo dell'azienda in trasparenza, sapete darmi qualche dritta?
 
ImageCreateFromString() per avere un oggetto GD strupabile :-), poi
adatti un qualsiasi script di "watermarking", infine
 
	ImagePNG($new_image);
 
per inviare l'immagine cosi' elaborata.
 
Leonardo
 
-- 
What would'st thou do, my squire so gay, that rides beside my reine
Were ye Glenallan's Earl this tide, and I were Roland Cheyne?
To turn the rein were sin and shame, to fight were wondrous peril:
What would ye do now, Roland Cheyne, were ye Glenallan's Earl?

 
 
Ok, ho modificato la funzione in in questo modo
 
...
$riga = mysql_fetch_row($risultato);
 
header("Content-Type: image/png"); 
                 $im = imagecreatefromstring($riga[0]);
                 $stamp = imagecreatefrompng('../Immagini/logo_trasp.png');
 
                 $marge_right = 0;
                 $marge_bottom = 0;
                 $sx = imagesx($stamp);
                 $sy = imagesy($stamp);
 
                 imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, 
imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));
 
                 imagepng($im);
                 imagedestroy($im);
...
 
ed ottengo ciò che voglio, 
ma su alcune immagini ottengo il seguente risultato
 
(logo nero) 
http://www.ferramentatodisco.it/test/nera.png
 
(logo bianco) 
http://www.ferramentatodisco.it/test/bianca.png
 
 
mentre su altre ottengo il logo trasparente corretto
http://www.ferramentatodisco.it/test/corretta.png
 
 
perché?


 
http://www.ferramentatodisco.it/test/corretta.png
 
 
[OT]
Ho dato un'occhiata al sito e, imho, a me sembra poco razionale, con la 
foto della testata che occupa il 40% della pagina (1024x768) e non serve 
a nulla in un sito che deve vendere oltre al logo aziendale che sta in 
alto a sinistra messo li come se fosse caduto dal cielo senza soluzione 
di continuità con la testata, troppi colori sparsi qua e la quasi a 
formare un caleidoscopio... poi sempre secondo me in home page mettere 
troppa roba sortisce solo l'effetto confusione che invoglia l'utente 
finale a rimanere solo se davvero c'è tanta scelta, se ci sono prezzi 
strepitosi o se c'è un prodotto non presente altrove !
 
Saluti ! :)
GbMax78
 

perché?
 
Probabilmente alcune immagini sono PNG con settaggi di trasparenza
o alpha channel inopportuni.
 
Una volta ottenuta l'immagine con ImageCreateFromString, dovresti,
forse, copiarla su una immagine di uguali dimensioni
 
	$gd  = ImageCreateFromString...
	/// {{{
	$gd2 = ImageCreateTrueColor(ImageSX($gd),ImageSY($gd));
	ImageAlphaBlending($gd2, False);
	ImageSaveAlpha($gd2, False);
	ImageCopy($gd2, $gd, 0, 0, 0, 0, ImageSX($gd), ImageSY($gd);
	ImageDestroy($gd);
	$gd2 = $gd;
	unset($gd);
	/// }}}
 
Da qui in poi è tutto come prima, ma ora $gd dovrebbe essere RGB e
nient'altro. Se ti riesce di farlo funzionare con $gd, ti funziona
sempre... o almeno credo :-)


 
 
Non funziona, anzi, peggiora la cosa,
le immagini che danno problema sono quelle indicizzate,
non esiste una funzione per passare da indicizzate a RGB?



Ti ringrazio per i suggerimenti, ne terrò conto.


non esiste una funzione per passare da indicizzate a RGB?
 
Per quanto ne so, copiare una immagine da indicizzata a un'altra creata con
ImageCreateTrueColor dovrebbe appunto passarla a RGB :-|


Non funziona, anzi, peggiora la cosa
 
Questo può anche essere un buon segno. Quello che si voleva ottenere
era di avere "sempre lo stesso risultato".
 
A questo punto, DOPO la copia, prova a riattivare l'alpha:
 
	ImageAlphaBlending($gd, True);
	ImageSaveAlpha($gd, True);


 
 
Ok, abbiamo appurato che NON FUNZIONA!!


Ok, abbiamo appurato che NON FUNZIONA!!
 
Hmmm. Hai il link a una immagine che funziona, una che non funziona,
e il logo da usare? Voglio fare un paio di prove a cattivo :-D


 
Sbagliavo io, ora funziona guardare per credere
 
http://www.ferramentatodisco.it/serch_articolo.php?artico=04412
 



http://www.ferramentatodisco.it/serch_articolo.php?artico=04412
 
 
Sii buono pero', chiamalo "search_articolo", ché "serch" mi fa un che :-)
 
Leonardo perfezionista
