Php Facebook sharer,显示的是拇指而不是大图像
我设立了一个竞赛,参赛者被要求在facebook上分享他们的结果 我使用以下按钮共享结果: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"
打印(“”)代码>
$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())解决了这个问题,因此每个字符串都是唯一的。说到这里,我确信它不会缓存图像,每次我点击共享按钮,图像顶部的数据都是唯一的,而且应该是唯一的。