在Joomla中调用字体时,图像不会显示

时间:2012-07-27 04:46:45

标签: php joomla joomla2.5 joomla1.6 imagettftext

我是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,没有扩展名,扩展名,来自上面链接的一堆东西,都是相同的结果。有任何想法吗?我猜(并希望!)一些愚蠢的东西?

1 个答案:

答案 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。但实际上它是错误的方式,因为它是一个本地文件。