Anu*_*rag 0 php image.createimage facebook-graph-api facebook-apps
我正在使用此代码将文本与图像合并,并且工作正常.但是当我在Facebook应用程序中使用此代码时,它不会显示任何输出.有人可以帮我解决问题吗?据我所知,问题在于这一行:
header("Content-Type: image/jpeg");
Run Code Online (Sandbox Code Playgroud)
当我删除它时,它显示一些混乱的输出.
<?php
header("Content-Type: image/jpeg");
$im = ImageCreateFrompng("jump_empty.png");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'ambient.ttf', "hellooo");
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>
Run Code Online (Sandbox Code Playgroud)
这是我用于Facebook应用程序的代码:
<?php
include_once 'facebook.php';
include_once 'config.php';
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET_KEY,
'cookie' => true,
'domain' => '_____'
));
header("Content-Type: image/jpeg");
$session = $facebook->getSession();
if (!$session) {
$url = $facebook->getLoginUrl(array(
'canvas' => 1,
'fbconnect' => 0,
'req_perms' => 'read_stream,publish_stream'
));
echo "<script type='text/javascript'>top.location.href = '$url';</script>";
} else {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
echo "Hey " . $me['name'] . "!<br />";
$im = ImageCreateFrompng("jump_empty.png");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'ambient.ttf', 'hello');
Imagejpeg($im, '', 100);
ImageDestroy($im);
}
catch (FacebookApiException $e) {
echo "Error:" . print_r($e, true);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
问题是您尝试在一个页面中提供两种不同的内容类型.你不能发送图像/ jpeg标题,告诉浏览器期望图像,然后发送js和/或HTML.要完成此任务,您应该使用两个PHP脚本.一个发送图像/ jpeg标题并生成第一个代码块中的图像,另一个标记包含第一个作为图像标记的src.如果您希望图像是动态的,您可以将参数传递给图像脚本,就像任何php页面一样.
你的第一个脚本叫它image.php然后是:
<?php
header("Content-Type: image/jpeg");
$im = ImageCreateFrompng("jump_empty.png");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'ambient.ttf', "hellooo");
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>
Run Code Online (Sandbox Code Playgroud)
就像你拥有它一样.你的第二个脚本是:
<?php
include_once 'facebook.php';
include_once 'config.php';
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET_KEY,
'cookie' => true,
'domain' => '_____'
));
$session = $facebook->getSession();
if (!$session) {
$url = $facebook->getLoginUrl(array(
'canvas' => 1,
'fbconnect' => 0,
'req_perms' => 'read_stream,publish_stream',
));
echo "<script type='text/javascript'>top.location.href = '$url';</script>";
} else
{
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
echo "Hey " . $me['name'] . "!<br />";
echo '<img src="image.php">';
}
catch (FacebookApiException $e) {
echo "Error:" . print_r($e, true);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.