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
26
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
P C# Salvare una colonna del DataGridView XML 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
M Leggere in un report il valore di una casella combinata di una maschera Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
S [VB.NET]: Coordinate immagini dentro una PictureBox Visual Basic 0
I stampare una stringa echo PHP 2
MarcoGrazia Riprendere una sessione interrotta PHP 0
L Rendere una parte trasparente Photoshop 3
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
otto9due Ordinare option di una select Javascript 5
N Come si crea una variabile dinamica da incrementare? Javascript 1
L Eliminazione di una pagina dalla gallery SEO e Posizionamento 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
L Riempimento di una tabella al click di un bottone Javascript 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
A media degli elementi estratti da una query MySQL 0
spider81man Eliminare primo ed ultimo carattere di una colonna MySQL 0
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

Discussioni simili