使用Imagepng()创建图像(Header失败)

时间:2015-02-09 作者:ttomdewit

我一直在为自定义主题编写一些代码。

The result:使用文本创建图像。

The problem:标题处失败:code 在生产中。

有趣的是,该函数在本地运行得非常好,但当我将所有内容上传到生产时,它就失败了。

代码:

$euro = get_option(\'euro\');
$super = get_option(\'super\');
$diesel = get_option(\'diesel\');
$autogas = get_option(\'autogas\');

// create array for prices
$arrayPrice = array(
  0 =>  $euro,
  1 =>  $super,
  2 => $diesel,
  3 => $autogas
);

// Create array for fuels
$arrayFuels = array(
  0 => \'euro\',
  1 => \'super\',
  2 => \'diesel\',
  3 => \'autogas\'
);

for($i = 0; $i < count($arrayPrice); $i++) {
  // Set the content-type
  header(\'Content-Type: image/png\');

  // Create the image
  $im = imagecreatetruecolor(105, 27);

  // Create some colors
  $white = imagecolorallocate($im, 255, 255, 255);
  $black = imagecolorallocate($im, 0, 0, 0);
  imagefilledrectangle($im, 0, 0, 399, 29, $white);

  // The text to draw
  $text = $arrayPrice[$i];
  // Replace path by your own font path
  $font = ABSPATH.\'wp-content/themes/gulf-venlo/ledboard.ttf\';

  // Add the text
  imagettftext($im, 20, 0, 0, 27, $black, $font, $text);

  // Using imagepng() results in clearer text compared with imagejpeg()
  ob_start();
  imagepng($im);
  $data = ob_get_clean();
  file_put_contents(ABSPATH.\'wp-content/themes/gulf-venlo/img/\'.$arrayFuels[$i].\'.png\', $data);
  imagedestroy($im);
}
我尝试过各种技巧,比如:

将该功能放在它自己的页面上,并包括/要求它使用更多OB功能(启动、销毁、清理)

    本地结果

    本地环境的结果正是它应该的结果:我为每种类型的燃油输入了一些价格,保留了更改。之后,网站主页上的每幅图片都将更新为新的价格。

    在线结果

    当我选择编辑价格时,我在自定义菜单中单击“Fuel”,只会找到一个带有蓝色矩形和问号的空白页(请参阅:http://goo.gl/fwxJXo)

    其他我知道代码需要一些工作,因为我确信有更好的方法将图像保存到主题内的文件夹中。

    已解决(编辑:2015年5月7日)

    不久前我删除了header(\'Content-Type: image/png\'); 它神奇地工作了。我过去常使用注释(//header(\'Content-Type: image/png\');) 禁用它,但这似乎没有奏效。

2 个回复
最合适的回答,由SO网友:ttomdewit 整理而成

已解决(编辑:2015年5月7日)

不久前我删除了header(\'Content-Type: image/png\'); 它神奇地工作了。我过去常使用注释(//header(\'Content-Type: image/png\');) 禁用它,但这似乎没有奏效。

SO网友:IlmarsL

您可以尝试使用get_template_directory() 而不是ABSPATH. 若wp内容不在生产服务器上的原始位置,则可能会解决您的问题。

注意后面没有斜杠get_template_directory():

$font = get_template_directory().\'/ledboard.ttf\';
...
file_put_contents(get_template_directory().\'/img/\'.$arrayFuels[$i].\'.png\', $data);

结束

相关推荐

Changing Gallery images size?

我正在抓取我的图库图像的URL:$gallery = get_post_gallery_images( $post ); foreach($gallery as $thumbnail) { echo $thumbnail_slideshow; } 问题是我得到的只是缩略图:image1-150x150.jpg image2-150x150.jpg image3-150x150.jpg 我想得到:image1-600x100.