applicare filigrana ad una miniatura

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Devo inserire un'immagine in un database, mi creo la miniatura e ad essa applicare una filigrana ossia il link del sito web. Ho realizzare il seguente script:
PHP:
        if(is_uploaded_file($img))                 //controllo se l'immagine è stata recuperata
            {
               $nome_img = strtolower ($alt);
               $nome_img = stripslashes ($alt);
               $nome_img = ereg_replace (" ", "_", $nome_img );
               $nome_img = ereg_replace ("'", "", $nome_img );
               $thumbs = "imgfoto/"; // directory di salvataggio delle miniature create
               $new_img = 'imgfoto/'."$nome_img".'.jpg';

               list($width, $height) = getimagesize($img);       //recupero le dimensioni dell'immagine orginale
               //dimensioni dell'immagine da creare
               $thumbWidth = 450; // larghezza
               $thumbHeight = 250; // altezza
               $thumbscale = min($thumbWidth / $width, $thumbHeight / $height);
               $new_width = floor($thumbscale * $width);
               $new_height = floor($thumbscale * $height);
                   /*creo una nuova immagine più piccola*/
               $tmp_img = @imagecreatetruecolor ($new_width, $new_height) or die ("Impossibile salvare l'immagine");
               $image = @imagecreatefromjpeg($img) or die ("L'immagine deve essere in jpeg ".mysql_error());
               imagecopyresampled($tmp_img, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height) or die ("Impossibile ridimensionare l'immagine");
               imagejpeg($tmp_img, $new_img, 100) or die ("qui errore");
               /*ho l'immagine in miniatura $new_img*/
               /*recupero l'immagine filigrana*/
               $filigrana = 'pic/filigrana.gif';
               $wtimg = imagecreatefromgif($filigrana);

               /*sovrappongo le due immagini*/
               @imagecopymerge($new_img, $wtimg, 0, 0, 0, 0, $dimensione[0], $dimensione[1], 100);
               @header("content-type: image/jpeg");
               $img_foto="<img src=$wtimg>";

               @imagedestroy($tmp_img);
               @imagedestroy($img_modificata);
            }
             else {echo "Nessuna immagine inserita<br />";}

non ho alcun problema con la miniatura. Il mio problema sta nella parte di script che applica l'immagine gif all'immagine jpg. Nel sito web mi inserisce il link <img src=Resource id #14> e non riesco a capire dove sbaglio.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Sbagli perché la variabile $wtimg è una risorsa, non è l'URL della nuova immagine. Quindi l'unico modo con cui puoi risolvere è modificare questa parte:
PHP:
@header("content-type: image/jpeg");
$img_foto="<img src=$wtimg>";
In questa maniera:
PHP:
$img_foto = "<img src=\"{$new_img}\" />";
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
conviene inserire gli operatori di silence (@) solo quando si è sicuri che lo script funziona pefettamente
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Correggendo lo script secondo le indicazioni di Alessandro1997 ottengo la foto in miniatura e non ho più l'errore nel database. Ma non ho l'immagine con il logo.
Ho anche modificato lo script in questo modo:
PHP:
       if(is_uploaded_file($img))                 //controllo se l'immagine è stata recuperata
            {
               $nome_img = strtolower ($alt);
               $nome_img = stripslashes ($alt);
               $nome_img = ereg_replace (" ", "_", $nome_img );
               $nome_img = ereg_replace ("'", "", $nome_img );
               $thumbs = "imgfoto/"; // directory di salvataggio delle miniature create
               $img_base = 'imgfoto/'."$nome_img".'.jpg';
               $img_wtm = 'pic/filigrana.gif';
               $img_logo  =  imagecreatefromgif($img_wtm);
               
               list($width, $height) = getimagesize($img);       //recupero le dimensioni dell'immagine orginale
               //dimensioni dell'immagine da creare
               $thumbWidth = 450; // larghezza
               $thumbHeight = 250; // altezza
               $thumbscale = min($thumbWidth / $width, $thumbHeight / $height);
               $new_width = floor($thumbscale * $width);
               $new_height = floor($thumbscale * $height);
               /*creo una nuova immagine più piccola*/
               $img_small = @imagecreatetruecolor ($new_width, $new_height) or die ("Impossibile salvare l'immagine");
               /*sovrappongo le due immagini */
               $image = @imagecreatefromjpeg($img) or die ("L'immagine deve essere in jpeg ".mysql_error());
               @imagecopy ( $img_logo, $img_base, 0, 0, 0, 0, $new_width, $new_height ) or die ("Impossibile inserire il logo");

               imagecopyresampled($img_small, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height) or die ("Impossibile ridimensionare l'immagine");
               imagejpeg($img_small, $img_base, 100) or die ("qui errore");
               
               /*ho l'immagine in miniatura $img_foto*/
               $foto="<img src=\"{$img_foto}\" />";
               @imagedestroy($img_small);
               @imagedestroy($img_logo);
            }
             else {echo "Nessuna immagine inserita<br />";}

ma anche in questo modo non risolvo il problema. Avendo inserito die ho "Impossibile inserire il logo". Quindi forse sbaglio in

PHP:
@imagecopy ( $img_logo, $img_base, 0, 0, 0, 0, $new_width, $new_height ) or die ("Impossibile inserire il logo");
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
eliminando @ ho individuato che il problema riguarda i parametri di imagecopymerge. Ora ho il seguente messaggio:

Warning: imagecopymerge(): supplied argument is not a valid Image resource in /var/www/vhosts/adivades000005/httpdocs/inserimento_foto_.php on line 75
Impossibile applicare il logo

Leggendo su internet ho provato a crearmi l'immagine da sovrapporre direttamente con il php e per questo motivo il codice è il seguente:
...
PHP:
               /*ho l'immagine in miniatura $new_img*/
               /*ora mi creo la scritta da inserire sulla foto*/
               $logo = imagecreatetruecolor(100, 70);        /*imagecreatetruecolor crea l'immagine di base, parametri: lunghezza e altezza dell'immagine*/
               $textcolor = imagecolorallocate ($logo, 51, 0, 51); /*imagecolorallocate serve per definire i colori del testo e dei caratteri */
               imagestring($logo, 8, 10, 8, 'visitandoilmondo.it', $textcolor);   /*scrive una stringa sull'immagine. 8 è la grandezza del font, 10 è lo spazio dal bordo sinistro,  8 spazio dal bordo alto*/
               /*sovrapposizione delle due immagini*/
               imagecopymerge($new_img, $logo, 10, 10, 0, 0, 100, 47, 80) or die ("Impossibile applicare il logo");;
               imagejpg($new_img, 'photo.jpg');
               imagedestroy($new_img);
               
               $img_foto="<img src=\"photo.jpg\" />";
            }
             else {echo "Nessuna immagine inserita<br />";}

Da quanto ho capito il problema sta in una delle due immagini $logo oppure $new_img
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
$logo lo usi anche in imagestring() senza errori, probabile che il problema stia nell'altra variabile
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Alla fine sono riuscita nell'intento. Ho messo su uno script che ridimensiona l'immagine che viene caricata attraverso un modulo e vi applica un'altra immagine, il logo. Ho usato un'immagine e non la creazione del testo tramite imagestring e imageallocatecolor poichè ho visto che con quest'ultima funzione ottengo uno sfondo nero ed io avevo bisogno di uno sfondo trasparente che non ottengo neanche utilizzando imageallocatecoloralpha.
Posto tutto lo script se per caso serve a qualcun altro:
PHP:
       if(is_uploaded_file($img))                 //controllo se l'immagine è stata recuperata
            {
               $nome_img = strtolower ($alt);
               $nome_img = stripslashes ($alt);
               $nome_img = ereg_replace (" ", "_", $nome_img );
               $nome_img = ereg_replace ("'", "", $nome_img );
               $thumbs = "imgfoto/"; // directory di salvataggio delle miniature create
               $new_img = 'imgfoto/'."$nome_img".'.jpg';
               list($width, $height) = getimagesize($img);       //recupero le dimensioni dell'immagine orginale
               //dimensioni dell'immagine da creare
               $thumbWidth = 450; // larghezza
               $thumbHeight = 250; // altezza
               $thumbscale = min($thumbWidth / $width, $thumbHeight / $height);
               $new_width = floor($thumbscale * $width);
               $new_height = floor($thumbscale * $height);
                   /*creo una nuova immagine più piccola*/
               $img_small = @imagecreatetruecolor ($new_width, $new_height) or die ("Impossibile salvare l'immagine");
               $image = @imagecreatefromjpeg($img) or die ("L'immagine deve essere in jpeg ".mysql_error());
               imagecopyresampled($img_small, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height) or die ("Impossibile ridimensionare l'immagine");
               imagejpeg($img_small, 'photo.jpg', 100) or die ("qui errore");
               imagedestroy($img_small);
               $img_pic = imagecreatefromjpeg('photo.jpg');
               /*ho l'immagine in miniatura $img_pic*/
               /*recupero il logo da inserire sulla foto*/
               $filigrana = 'pic/filigrana.gif';
               $logo = imagecreatefromgif($filigrana);
               /*sovrapposizione delle due immagini*/
               imagecopymerge($img_pic, $logo, 5, 5, 0, 0, 200, 50, 100) or die ("Impossibile applicare il logo");
               imagejpeg($img_pic, $new_img, 100);
               imagedestroy($img_pic);

               $img_foto='<img src='."$new_img".' />';
            }
             else {echo "Nessuna immagine inserita<br />";}
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Grazie per aver postato il codice della soluzione, sarà utile a qualche altro utente:)
 
Discussioni simili
Autore Titolo Forum Risposte Data
giannit [PHP] Applicare natsort usando un array PHP 12
ANDREA20 Creare carrello della spesa e applicare uno sconto E-Commerce 6
asevenx trasparenza da non applicare allo sfondo HTML e CSS 3
G Con Photoshop per applicare la Nitidezza (Filtro>Nitidezza) Photoshop 1
V Applicare un effetto di transizione tra due activity Sviluppo app per Android 1
M Applicare funzione php ad ogni elemto html Ajax 3
T applicare un effetto MOUSEOVER su uno SHORTCODE generato da plugin in WORDPRESS jQuery 6
T é possibile applicare HTML ad uno SHORTCODE? HTML e CSS 0
T applicare un effetto MOUSEOVER su THUMBNAILS generati da SHORTCODE WordPress 0
F Applicare uno stile css ad una sola parola HTML e CSS 5
asevenx applicare filtro anti spam PHP 6
M Livevalidation: applicare validazione solo se si sceglie una option di una select. Javascript 0
W Applicare modello alle pagine con Dreamweaver mx Webdesign e Grafica 0
A applicare un texture di sfondo omogeneo HTML e CSS 3
A applicare logo.psd ad un filmato Webdesign e Grafica 1
A consigli su come applicare maschera costruta con photoshop Photoshop 3
N Applicare stili in asp Classic ASP 1
M Applicare xsl in html Ajax 5
G Come applicare formattazione classe ad un tag già formattato? HTML e CSS 3
I Applicare "involucro" al testo? Flash 0
S Filigrana stampata? Discussioni Varie 1
F Filigrana in FP 2000 HTML e CSS 4
pacemattia408 disattivazione di una function Javascript 4
G Eliminare l'effetto refresh di una pagina internet PHP 8
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
M Select Option dentro una Table jQuery 2
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
E Scrivere una data corrente in un pdf PHP 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
I Assegnare dati fetch request ad una variabile globale Javascript 0
Shyson Puntare ad una sotto directory WordPress 3
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 6
S Selezionare ultimo record di una sotto query MySQL 26
V Query per una somma PHP 2
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
L salvare una immagine elaborata in canvas Javascript 1
L salvare una immagine elaborata in canvas Javascript 1
W visualizzare solo file html e sottocartelle di una cartella PHP 1
W Elenco dei link del file presenti in una cartella PHP 2
R Mettere in sicurezza una comunicazione .NET Framework 0
L Creare una forma geometrica Photoshop 1
G Casella combinata in una query MS Access 4
voldemort Cos'è una SCRL? Che tipo di società è?? Leggi, Normative e Fisco 1
F Funzione Glob - ricerca file contenente una parola PHP 1
felino [EXCEL] Conteggio ore all'interno di una settimana Windows e Software 7
Y cambiare sfondo di una pagina Javascript 1
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
S Apertura in una nuova pagina PHP 6
S impostare un testo e una img nella stessa riga con jsPDF Javascript 0

Discussioni simili