Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    la funzione imagettftext mi sta facendo impazzire!

    Ciao a tutti! E' da ieri che sto provando a inserire un testo su una JPG tramite PHP.
    Ho letto praticamente tutto quello che c'è da leggere sulla funzione imagettftext().
    Ma quando provo a testarla non funziona:
    Questo è il codice che sto usando:

    Codice PHP:
    <?php
    // Set the content-type
    header('Content-Type: image/png');

    // Create the image
    $im imagecreatetruecolor(40030);

    // Create some colors
    $white imagecolorallocate($im255255255);
    $grey imagecolorallocate($im128128128);
    $black imagecolorallocate($im000);
    imagefilledrectangle($im0039929$white);

    // The text to draw
    $text 'Testing...';
    // Replace path by your own font path
    $font __DIR__ './ARIALN.TTF';

    // Add some shadow to the text
    imagettftext($im2001121$grey$font$text);

    // Add the text
    imagettftext($im2001020$black$font$text);

    // Using imagepng() results in clearer text compared with imagejpeg()
    imagepng($im);
    imagedestroy($im);
    ?>
    e questo è ciò che ottengo:

    L'immagine "http://127.0.0.1/...eccecc" non può essere visualizzata in quanto contiene degli errori

    mi pare di capire che il problema risieda nel percorso del file ttf (almeno credo).
    Motivo per il quale ho provato in 1000 modi diversi a dichiararo:

    Codice PHP:
    $font='ARIALN.TTF'
    Codice PHP:
    $font='./ARIALN.TTF'
    Codice PHP:
    $font='/ARIALN.TTF'
    ecc ecc

    Ho verificato che le librerie GD fossero correttamente installate e così è...

    Non so più dove sbattere la testa

    Qualcuno può darmi qualche aiuto? Grazieeee
    Ultima modifica di Veronica80; 10-09-2024 a 13:54

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,472
    Se è un jpg perché dichiari all'inizio image/png e non image/jpeg?

    Il messaggio ti dice che l'immagine ha un errore perché si aspetta i marcatori di un png, invece tu provi a visualizzare un jpg.

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Se è un jpg perché dichiari all'inizio image/png e non image/jpeg?

    Il messaggio ti dice che l'immagine ha un errore perché si aspetta i marcatori di un png, invece tu provi a visualizzare un jpg.
    Questo è un codice che ho preso dal manuale PHP... perchè dici "se è un jpg"? dove è scritto che è un jpg?

  4. #4
    Usa il tuo codice originale.
    Rimuovi i ?> finale (non serve e rischi di accodare caratteri in più).
    Scarica il font da qui:

    https://github.com/tobi/Tukui8/blob/...nts/ARIALN.ttf

    Mettilo nella stessa cartella dello script.

    Funziona, appena testato.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,472
    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Questo è un codice che ho preso dal manuale PHP... perchè dici "se è un jpg"? dove è scritto che è un jpg?
    Sta scritto nel tuo primo messaggio
    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Ciao a tutti! E' da ieri che sto provando a inserire un testo su una JPG tramite PHP.[...]

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Sta scritto nel tuo primo messaggio
    Aaaaah scusami sono fusa...avevo fatto talmente tante prove e modifiche al codice che � rimasto quel pezzo li per le PNG.
    Ora lo correggo. Comunque il problema resta e anzi vedo che ora c'� anche su altre porzioni di codice che prima funzionavano (che usano le lib. GD)...Boh...non so che cavolo succede

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Tipo ora ho lo stesso identico problema anche con questo codice molto più semplice:

    Codice PHP:
     <?php
    header 
    ('Content-Type: image/png');
    $im = @imagecreatetruecolor(12020)
          or die(
    'Cannot Initialize new GD image stream');
    $text_color imagecolorallocate($im2331491);
    imagestring($im155,  'A Simple Text String'$text_color);
    imagepng($im);
    imagedestroy($im);
    ?>

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Usa il tuo codice originale.
    Rimuovi i ?> finale (non serve e rischi di accodare caratteri in più).
    Scarica il font da qui:

    https://github.com/tobi/Tukui8/blob/...nts/ARIALN.ttf

    Mettilo nella stessa cartella dello script.

    Funziona, appena testato.
    ok provo!

  9. #9
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Usa il tuo codice originale.
    Rimuovi i ?> finale (non serve e rischi di accodare caratteri in più).
    Scarica il font da qui:

    https://github.com/tobi/Tukui8/blob/...nts/ARIALN.ttf

    Mettilo nella stessa cartella dello script.

    Funziona, appena testato.
    Fatto tutto ciò che mi hai detto e il problema persiste ma a sto punto inizio a pensare che non sia un problema di codice ma di qualche settaggio di PHP (anche se a onor del vero ho lo stesso problema sia sul server locale che remoto....)

  10. #10
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Allora ragazzi ho risolto così:
    • ho spostato l'header sotto prima dell'invio dell'output al browser.
    • Siccome ancora non funzionava ho aggiunto ob_clean() prima dell'header

    e come per magia ora tutto funziona!

    Idem per il secondo script!

    Non chiedetemi perchè dato che ho solo trovato un post in giro nel web che diceva di fare così in realtà devo ancora controllare a che serve la funzione ob_clean()

    Grazie comunque a tutti!!!!

    Codice PHP:
     <?php

    // Create the image
    $im imagecreatetruecolor(40030);

    // Create some colors
    $white imagecolorallocate($im255255255);
    $grey imagecolorallocate($im128128128);
    $black imagecolorallocate($im000);
    imagefilledrectangle($im0039929$white);

    // The text to draw
    $text 'Testing...';
    // Replace path by your own font path
    $font './ARIALN.TTF';

    // Add some shadow to the text
    imagettftext($im2001121$grey$font$text);
    // Add the text
    imagettftext($im2001020$black$font$text);

    // Set the content-type
    ob_clean();
    header('Content-Type: image/png');
    // Using imagepng() results in clearer text compared with imagejpeg()
    imagepng($im);
    imagedestroy($im);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.