2012-11-07 12 views
11

Ho codice di creazione immagine in image_creator.Come aggiungere testo a un'immagine con libreria GD PHP

<?php 
header("Content-Type: image/jpeg"); 
$im = ImageCreateFromGif("photo.gif"); 
$black = ImageColorAllocate($im, 255, 255, 255); 
$start_x = 10; 
$start_y = 20; 
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'verdana.ttf', "text to write"); 
Imagejpeg($im, '', 100); 
ImageDestroy($im); 
?> 

Il file per l'output di immagini è image.php e ha seguito il codice

<html> 
<head> 
</head> 
<body> 
    <img src="http://localhost/image_creator.php"/> 
</body> 

</html> 

Quando eseguo image.php, ottengo solo una pagina vuota. Perché è così?

+2

Prima di tutto '$ nero = imagecolorallocate ($ im, 255, 255, 255);' - questo è bianco, non nero. Hai errori? Controllato il log degli errori? – iMoses

+0

@iMoses Penso che il '$ black' sia solo perché ha copiato il codice da php.net: http://php.net/manual/en/function.imagettftext.php – George

+0

Non lo rende corretto o ha senso. Sono sicuro che hanno capito bene. Non è un problema, solo confusione. L'immagine "vuota" potrebbe essere bianca su sfondo bianco. – iMoses

risposta

31

Usare questa per aggiungere testo all'immagine (copiato da PHP for Kids)

<?php 
     //Set the Content Type 
     header('Content-type: image/jpeg'); 

     // Create Image From Existing File 
     $jpg_image = imagecreatefromjpeg('sunset.jpg'); 

     // Allocate A Color For The Text 
     $white = imagecolorallocate($jpg_image, 255, 255, 255); 

     // Set Path to Font File 
     $font_path = 'font.TTF'; 

     // Set Text to Be Printed On Image 
     $text = "This is a sunset!"; 

     // Print Text On Image 
     imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text); 

     // Send Image to Browser 
     imagejpeg($jpg_image); 

     // Clear Memory 
     imagedestroy($jpg_image); 
    ?> 
+11

Lo hai appena incollato da http://www.phpforkids.com/php/php-gd-library-adding-text-writing.php prova a segnalare invece il problema –

+2

Per favore cita anche le tue fonti ... altrimenti è solo plagio. Ho aggiunto nella citazione. –

+0

Se volessi aggiungere più righe di testo sulla stessa immagine prima di inviarla al browser, sarebbero necessarie alcune funzioni 'imagettftext()'? Inoltre, come posso salvare questa immagine in una directory effettiva nel mio server in modo che l'utente possa stamparla in qualsiasi momento? – codeninja

0

problema qui è, $black = ImageColorAllocate($im, 255, 255, 255); // < == questo non nero, il suo bianco // per il nero dovrebbe essere come,

$black = ImageColorAllocate($im, 0, 0, 0); 
+1

È solo un nome di variabile, non è un problema (duh) – stormrage

0

problema qui è

$black = ImageColorAllocate($im, 255, 255, 255); 

questo non è nero, è bianco. Per il nero dovrebbe essere come,

$black = ImageColorAllocate($im, 0, 0, 0);