Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook sharer,显示的是拇指而不是大图像_Php_Facebook_Facebook Sharer - Fatal编程技术网

Php Facebook sharer,显示的是拇指而不是大图像

Php Facebook sharer,显示的是拇指而不是大图像,php,facebook,facebook-sharer,Php,Facebook,Facebook Sharer,我设立了一个竞赛,参赛者被要求在facebook上分享他们的结果 我使用以下按钮共享结果: 打印(“”) $makeUniq确保facebook获取结果,而不是第一次缓存结果(当链接保持缓存不变时,现在不会,因为每次请求链接都会更改) php是存放图像的文件。它采用标准模板并将竞赛输入转换为图像覆盖 <?php session_start(); header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"

我设立了一个竞赛,参赛者被要求在facebook上分享他们的结果

我使用以下按钮共享结果:

打印(“”)

$makeUniq确保facebook获取结果,而不是第一次缓存结果(当链接保持缓存不变时,现在不会,因为每次请求链接都会更改)

php是存放图像的文件。它采用标准模板并将竞赛输入转换为图像覆盖

<?php
session_start();
header("Cache-Control: no-store, no-cache, must-revalidate,    max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

// Output to browser
header('Content-Type: image/png');

// Create a 300x150 image

//WHITE BACKGROUND COLOR
$im = imagecreatetruecolor(1000, 1000);

$im = imagecreatefrompng("images/test.png");

$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);
$test = imagecolorallocate($im, 255, 255, 0);

// Set the background to be white
imagefilledrectangle($im, 0, 0, 900, 990, $test);

// Path to our font file
$font       = 'fonts/DINPro-Medium.ttf';
$fontSize   = 24;
$angle      = 0;

$x = 80;
$y = 150;
// Write it
imagettftext($im, $fontSize, $angle, $x, $y, $white, $font, ' : n');

$x = 80;
$y = 200;
// Write it
imagettftext($im, $fontSize, $angle, $x, $y, $white, $font, 'k : ');


$x = 80;
$y = 250;
// Write it
imagettftext($im, $fontSize, $angle, $x, $y, $white, $font, 'Ler :n');


$x = 80;
$y = 300;
// Write it
imagettftext($im, $fontSize, $angle, $x, $y, $white, $font, 'Mouwer : ');

$x = 80;
$y = 350;
// Write it
imagettftext($im, $fontSize, $angle, $x, $y, $white, $font, 'Rwer n');

$x = 80;
$y = 400;
// Write it
imagettftext($im, $fontSize, $angle, $x, $y, $white, $font, 'Rechtk : ');

$x = 80;
$y = 450;
// Write it
imagettftext($im, $fontSize, $angle, $x, $y, $white, $font, 'Cir : ');
imagepng($im);
imagedestroy($im);

?>

到目前为止,一切都按预期进行

问题是,当facebook共享功能打开时,facebook会一直将图像显示为缩略图,而不是大图像

我的目标是得到一个大图像:

我曾多次尝试改变解决方案,互联网上有几篇帖子接近于描述这个问题。 有人知道我如何解决这个问题吗


提前谢谢

Facebook上共享链接的推荐图片大小为1200x630。如果图片太小,Facebook将对其进行中心裁剪,只显示图片的缩略图。我相信de的最小尺寸是600x315,但在高分辨率设备上效果可能不太好。如果您想让它看起来好看,并在所有设备上显示全尺寸图片,请使用1200x630px图片

您可以找到这些最佳实践的参考资料

编辑:


你的问题可能是因为Facebook爬虫缓存了它所抓取的信息,所以即使你修复了它的分辨率,你的旧图片也可能被FB使用。请确保,强制Facebook爬虫重新爬网您的网站并获取新数据,或者干脆清空特定URL的缓存,强制它在下次共享链接时重新爬网您的网站。否则FB可能仍然使用缓存中已有的旧图片

您可以尝试指定以下OG元素:

og:image:width 
og:image:height
这些标签有助于爬虫在下载图像之前获取图像大小。也许你会得到一个更小的图像预览,因为爬虫一开始没有得到正确的大小,现在你会从缓存中得到预览

编辑:
当然,您应该确保使用的图像至少为1200 x 630 px

我尝试过使用这些尺寸,但得到了相同的结果。是否可以将高度和宽度作为url中的参数发送?@FrankW。我在上面编辑了我的答案可能是缓存问题。Alberto提到的og:image:heigth&go:image:width元标记仅在爬网程序第一次在缓存中没有任何内容的情况下爬网URL时使用。如果不包括它们,您将不会在Facebook共享对话框中第一次看到图像预览,因为它必须异步加载。如果包含它们,您将能够在共享对话框中看到图像预览,即使爬虫在缓存中为nothing,因为它将能够同步加载。在Facebook爬虫将所有内容缓存后,这些标签不再有用,因此这不是导致您出现问题的原因。嗨,谢谢您的回答。问题是我没有在页面上发送meta,但我将它们作为参数包含在我的url中。我必须这样做的原因是因为我不希望facebook缓存图像(每个参与内容的人都有不同的结果)。即使使用url中的参数,它也会缓存内容。通过使用md5(rand())解决了这个问题,因此每个字符串都是唯一的。说到这里,我确信它不会缓存图像,每次我点击共享按钮,图像顶部的数据都是唯一的,而且应该是唯一的。