0

几天前,我正在寻找在 wordpress 网站上使用我的自定义 php 的方法,我在这里找到了答案:How to add a php page to Wordpress
尝试了几个示例,并且对每个示例都有效。但后来我想更进一步,在这样添加的 wordpress 页面中使用 PHP 图像处理。它适用于普通的 php 站点(仅使用此代码),但是当我尝试在 worpress 中使用它时出现错误:

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\wordpress\wp-content\themes\twentyeleven\header.php:13) in C:\xampp\htdocs\wordpress\wp-content\themes\twentyeleven\mynewsite.php on line 26

我正在尝试使用的代码是:

<?php
$dest = imagecreatefrompng('image1.png');
$src = imagecreatefromjpeg('image2.jpg');

imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //putting one image on top of other

header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
?>

好吧,我知道问题是我想在这里发送标头,但我不知道如何解决它。
我尝试将此标题移动到文件顶部,但随后整个 wopress 站点不加载。

header('Content-Type: image/png');
get_header(); //<-- part of wordpress template, cant get rid of it, cuz it ruins whole site look.

所以看起来像 get_header(); 在这里不知何故是“问题”。
尝试使用 ob_start()、flush、clean 等,但随后我得到了我想要的图像,而无需加载 worpress 站点。我用完了所有选项,但这些都没有解决我的问题。

我的问题是:如何发送此标头以使其正常工作,因为没有它我会看到一些奇怪的符号而不是 png 图像(就像我会用记事本打开 png 图像)

任何帮助表示赞赏。

4

2 回答 2

2

当我在关闭 php 标记“?>”之后有一个空格/换行符时遇到了这个问题,我从所有文件中删除了它,它对我有用。很奇怪,但它奏效了。

于 2012-07-06T08:28:07.193 回答
2

好的,找到了解决方案。发布答案,因为它可能在未来对其他人有用。

所以我会用简单的词,这让我明白了这一点。
header('Content-Type: image/png');使整个网站被“视为图像”。因此,当我什至找到将标题放入 WordPress 文件的位置时,它仍然没有显示任何结果。要解决这个问题,只需创建另一个名为的文件image.php并将 PHP GD 代码放在那里。

$dest = imagecreatefrompng('image1.png');
$src = imagecreatefromjpeg('image2.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //putting one image on top of other
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);

当然,在<?php ?>标签和 WordPress 页面中,您想要显示它的地方使用<img src = "image.php">. 这将消除标题的所有错误,并且还将显示此 PHP 代码已创建的图像。

于 2012-07-06T10:33:59.063 回答