我是Joomla dev和php的新手,所以如果我做些蠢事请告诉我!
我正在创建一个证书,在用户完成一个带有他们的姓名,日期等的测验后打印。我已经让图像显示出来并显示文字,但是当我添加字体时,没有显示任何内容。
这是我正在使用和工作的基本脚本(背景图像和字体工作):
$image_file = 'images/certificate_page.png';
$my_img = imagecreatefrompng ($image_file);
$font_size_big = 24;
$text_colour = imagecolorallocate( $my_img, 0, 0, 0 );
$font_file = 'FelipaRegular.ttf';
imagefttext( $my_img, $font_size_big, 0, 5, 75, $text_colour, $font_file, "test with font");
imagestring( $my_img, 4, 30, 25, "test without font", $text_color );
header( "Content-type: image/png" );
imagepng( $my_img );
imagecolordeallocate( $text_color );
imagedestroy( $my_img );
当我尝试在Joomla中应用它时,问题就开始了。我在这样的模板中调用它:
<img src="<?php echo JURI::root().'index.php?tmpl=certgenerator&quizmod='.$quizmod.'' ?>" />
和文件生成器(certgenerator.php):
defined('_JEXEC') or die;
require_once("includes/variables_certificate.php");
$image_file = JURI::root().'templates/'.$this->template.'/images/certificate_page.png';
$my_img = imagecreatefrompng ($image_file);
$font_size_big = 24;
$text_color = imagecolorallocate( $my_img, 0, 255, 0 );
$font_file = 'FelipaRegular.ttf';
imagefttext( $my_img, $font_size_big, 0, 55, 75, $text_color, $font_file, "why u no work"); //if commented out image displays but not font obviously, as it's written now it returns a blank page
imagestring( $my_img, 4, 30, 25, "works", $text_color ); //works but doesn't include font
header( "Content-type: image/png" );
imagepng( $my_img );
imagecolordeallocate( $text_color );
imagedestroy( $my_img );
参考:
http://php.net/manual/en/function.imagettftext.php
我已经尝试过imagettftext vs imagefttext,没有扩展名,扩展名,来自上面链接的一堆东西,都是相同的结果。有任何想法吗?我猜(并希望!)一些愚蠢的东西?
答案 0 :(得分:2)
在PHP处理文件时,如果是JURI,则应使用JPATH_。 JURI用于生成http URI。
$image_file = JURI::root().'templates/'.$this->template.'/images/certificate_page.png';
应该是
$image_file = JPATH_SITE.'/templates/'.$this->template.'/images/certificate_page.png';
不确定这是否是问题,你的代码可能会正常工作,因为我有一种偷偷摸摸的怀疑,即imagecreatefrompng()接受http。但实际上它是错误的方式,因为它是一个本地文件。