2012-11-07 45 views
11

Tôi có mã tạo hình ảnh trong image_creator.Cách thêm văn bản vào hình ảnh bằng thư viện 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); 
?> 

Các tập tin cho đầu ra hình ảnh là image.php và có mã dưới đây

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

</html> 

Khi tôi chạy image.php, tôi chỉ nhận được một trang trống. Tại sao nó như vậy?

+2

Đầu tiên của tất cả '$ black = ImageColorAllocate ($ im, 255, 255, 255);' - đây là màu trắng, không phải màu đen. Bạn có gặp lỗi gì không? Đã kiểm tra nhật ký lỗi? – iMoses

+0

@iMoses Tôi nghĩ rằng '$ black' chỉ là do hes sao chép mã từ php.net: http://php.net/manual/en/function.imagettftext.php – George

+0

Không làm cho nó đúng hay có ý nghĩa. Tôi chắc rằng họ đã đúng. Nó không phải là một vấn đề, chỉ gây nhầm lẫn. Hình ảnh "trống" có thể chỉ có màu trắng trên nền trắng. – iMoses

Trả lời

31

Sử dụng này để thêm văn bản vào hình ảnh (copy từ 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

Bạn vừa dán nó từ http://www.phpforkids.com/php/php-gd-library-adding-text-writing.php cố gắng chỉ ra vấn đề thay vì –

+2

Vui lòng trích dẫn nguồn của bạn ... nếu không nó chỉ là đạo văn. Tôi đã thêm vào trong trích dẫn. –

+0

Nếu tôi muốn thêm một vài dòng văn bản trên cùng một hình ảnh trước khi gửi nó vào trình duyệt, một số hàm 'imagettftext()' có cần phải được thêm vào không? Ngoài ra, làm thế nào để lưu hình ảnh này vào một thư mục thực tế trong máy chủ của tôi để người dùng có thể in nó bất cứ lúc nào anh ta muốn? – codeninja

0

Vấn đề ở đây là, $black = ImageColorAllocate($im, 255, 255, 255); // < == đây không phải màu đen, trắng của nó // cho đen nó nên được như thế,

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

Nó chỉ là tên của biến dude, nó không phải là một vấn đề (duh) – stormrage

0

vấn đề ở đây là

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

không phải màu đen, màu trắng của nó. Đối với màu đen, nó phải như thế,

$black = ImageColorAllocate($im, 0, 0, 0); 
Các vấn đề liên quan