如何在向图像添加文本后保存图像

时间:2014-09-27 11:17:39

标签: php gd

为了向图像添加文字我正在使用网站下面的代码

<?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);
?> 

它运行良好,但我无法保存在图片中保存文本文件我正在使用它 功能

function write($post,$myFile){
    $fh = fopen($myFile, 'a+') or die("can't open file");
    fwrite($fh, $post);
    fclose($fh);
} 

有什么方法可以在jpg中保存图像吗?

3 个答案:

答案 0 :(得分:2)

这是我自己的代码并且运行良好!只需将 name.jpg 的名称更改为您想要的文件名

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

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

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


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

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

  // Print Text On Image
  $x=20;
  for($i=0;$i<=strlen($text);$i++){
   $print_text=substr($text,$i,1);
   $x+=20;
    imagettftext($jpg_image, 30, 0, $x, 200, $white, $font_path, $print_text);
  }


  // Send Image to Browser
  imagejpeg($jpg_image,'name.jpg');

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

我的代码与你的代码有点不同,其中一个不同的是你没有改变指针的位置,你要把你的角色放在哪里我的意思是$ x

imagettftext($jpg_image, 30, 0, $x, 200, $white, $font_path, $print_text);

另一个不同的是角色,你把字符串(不是字符)给了 imagettftext 函数,但我给了一个字符。我认为角色比字符串更好特别是创建验证码。

答案 1 :(得分:0)

要将图片保存在文件中而不是输出图片,只需将行imagejpeg($jpg_image);更改为imagejpeg($jpg_image, 'yourfile.jpg');(在这种情况下您也可以删除header('Content-type: image/jpeg');)。

答案 2 :(得分:0)

检查此代码。它与您的代码相同,唯一的区别是

imagejpeg($jpg_image,"imagefolderpath/image.jpg");

而不是imagejpeg($jpg_image);
也许它对你有帮助。

<?php
  header('Content-type: image/jpeg');
  $jpg_image = imagecreatefromjpeg('sunset.jpg');
  $white = imagecolorallocate($jpg_image, 255, 255, 255);
  $font_path = 'font.TTF';
  $text = "This is a sunset!";
  imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);
  imagejpeg($jpg_image,"imagefolderpath/image.jpg");
  imagedestroy($jpg_image);
?>