图像上的动态文本突然不起作用
Dynamic Text on Image Suddenly Not Working
所以我正在创建一个 returns 根据输入进行引用的网站。我希望引号作为图片上的文本返回,因此我在 http://jonlim.ca/2011/11/creating-an-image-with-dynamic-text-in-php/ 找到了帮助我的指南。
我 运行 xampp 来测试我的 php 代码目前看起来像...
<?php
header("Content-Type: image/png");
/*$string = $_GET['days'];*/
$im = imagecreatefrompng("twainpen.png");
imagealphablending($im, false);
imagesavealpha($im,true);
$transparent = imagecolorallocatealpha($im, 255, 255, 255, 127);
imagepng($im);
$black = imagecolorallocate($im, 0, 0, 0);
$font = 'daniel.ttf';
$initialX = '153';
$initialY = '35';
$increaseY = '23';
$fontSize = '16';
$fontRotation = '0';
$firstline = 'What do you mean';
$secondline = 'there are ' . $string . ' days until';
$thirdline = 'Christmas?! What am';
$fourthline = 'I supposed to do until';
$fifthline = 'then? WAIT?! I am';
$sixthline = 'not a patient man!';
//imagestring($im, $font, $px, 20, $string, $black);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY, $black, $font, $firstline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+$increaseY, $black, $font, $secondline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*2), $black, $font, $thirdline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*3), $black, $font, $fourthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*4), $black, $font, $fifthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*5), $black, $font, $sixthline);
imagepng($im);
imagedestroy($im);
?>
此代码与指南几乎相同,真正令人沮丧的是几周前我最后一次使用它时我让它工作,但在我开始胡乱处理其他东西后我又回来了它将不再起作用(所发生的只是图片显示时没有任何文字)。我打赌解决方案是我犯的一些愚蠢的错误,但不确定它是什么。字体和代码以及图片在同一个文件夹。
如有任何帮助或想法,我们将不胜感激!谢谢。
首先你必须删除第 8 行。它在添加文本之前输出图像。然后正确设置字体路径。
此处描述:
http://php.net/manual/en/function.imagettftext.php
Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.
<?php
header("Content-Type: image/png");
$string = $_GET['days'];
$im = imagecreatefrompng("twainpen.png");
imagealphablending($im, false);
imagesavealpha($im,true);
$transparent = imagecolorallocatealpha($im, 255, 255, 255, 127);
$black = imagecolorallocate($im, 0, 0, 0);
$font = './daniel.ttf';
$initialX = '153';
$initialY = '35';
$increaseY = '23';
$fontSize = '16';
$fontRotation = '0';
$firstline = 'What do you mean';
$secondline = 'there are ' . $string . ' days until';
$thirdline = 'Christmas?! What am';
$fourthline = 'I supposed to do until';
$fifthline = 'then? WAIT?! I am';
$sixthline = 'not a patient man!';
//imagestring($im, $font, $px, 20, $string, $black);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY, $black, $font, $firstline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+$increaseY, $black, $font, $secondline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*2), $black, $font, $thirdline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*3), $black, $font, $fourthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*4), $black, $font, $fifthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*5), $black, $font, $sixthline);
imagepng($im);
imagedestroy($im);
?>
Payam Mohammadi 使用以下简单解决方案解决了我的问题:"add this before header: error_reporting(0);"
图片png($im);线也必须取出。
所以我正在创建一个 returns 根据输入进行引用的网站。我希望引号作为图片上的文本返回,因此我在 http://jonlim.ca/2011/11/creating-an-image-with-dynamic-text-in-php/ 找到了帮助我的指南。
我 运行 xampp 来测试我的 php 代码目前看起来像...
<?php
header("Content-Type: image/png");
/*$string = $_GET['days'];*/
$im = imagecreatefrompng("twainpen.png");
imagealphablending($im, false);
imagesavealpha($im,true);
$transparent = imagecolorallocatealpha($im, 255, 255, 255, 127);
imagepng($im);
$black = imagecolorallocate($im, 0, 0, 0);
$font = 'daniel.ttf';
$initialX = '153';
$initialY = '35';
$increaseY = '23';
$fontSize = '16';
$fontRotation = '0';
$firstline = 'What do you mean';
$secondline = 'there are ' . $string . ' days until';
$thirdline = 'Christmas?! What am';
$fourthline = 'I supposed to do until';
$fifthline = 'then? WAIT?! I am';
$sixthline = 'not a patient man!';
//imagestring($im, $font, $px, 20, $string, $black);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY, $black, $font, $firstline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+$increaseY, $black, $font, $secondline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*2), $black, $font, $thirdline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*3), $black, $font, $fourthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*4), $black, $font, $fifthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*5), $black, $font, $sixthline);
imagepng($im);
imagedestroy($im);
?>
此代码与指南几乎相同,真正令人沮丧的是几周前我最后一次使用它时我让它工作,但在我开始胡乱处理其他东西后我又回来了它将不再起作用(所发生的只是图片显示时没有任何文字)。我打赌解决方案是我犯的一些愚蠢的错误,但不确定它是什么。字体和代码以及图片在同一个文件夹。
如有任何帮助或想法,我们将不胜感激!谢谢。
首先你必须删除第 8 行。它在添加文本之前输出图像。然后正确设置字体路径。
此处描述:
http://php.net/manual/en/function.imagettftext.php
Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.
<?php
header("Content-Type: image/png");
$string = $_GET['days'];
$im = imagecreatefrompng("twainpen.png");
imagealphablending($im, false);
imagesavealpha($im,true);
$transparent = imagecolorallocatealpha($im, 255, 255, 255, 127);
$black = imagecolorallocate($im, 0, 0, 0);
$font = './daniel.ttf';
$initialX = '153';
$initialY = '35';
$increaseY = '23';
$fontSize = '16';
$fontRotation = '0';
$firstline = 'What do you mean';
$secondline = 'there are ' . $string . ' days until';
$thirdline = 'Christmas?! What am';
$fourthline = 'I supposed to do until';
$fifthline = 'then? WAIT?! I am';
$sixthline = 'not a patient man!';
//imagestring($im, $font, $px, 20, $string, $black);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY, $black, $font, $firstline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+$increaseY, $black, $font, $secondline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*2), $black, $font, $thirdline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*3), $black, $font, $fourthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*4), $black, $font, $fifthline);
imagettftext($im, $fontSize, $fontRotation, $initialX, $initialY+($increaseY*5), $black, $font, $sixthline);
imagepng($im);
imagedestroy($im);
?>
Payam Mohammadi 使用以下简单解决方案解决了我的问题:"add this before header: error_reporting(0);"
图片png($im);线也必须取出。