我试图将合并后的图像从php传递到html元标记(如果您想知道的话,可以使用Twitter摘要卡)但是图像的数据没有被传递。 当我运行这段代码时,我从html或php中得不到任何错误:
PHP
$dest = imagecreatefromjpeg('http://www.website.com/Some-images/'.$postID.'.jpg');
$src = imagecreatefromjpeg('http://www.website.com/media/dog.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100);
HTML
<meta name="twitter:image" content="'.$dest.'">
我不是100%确定你甚至可以将原始图像传递到元标记的content属性中,但我认为应该有办法做到这一点我也认为这是是什么导致图像不显示。如果不能使用php解决方案,我会接受html / css解决方案。我已经坚持了一段时间,所以你可能会有任何建议和意见,将会非常感激。谢谢!
修改
我应该补充一点,这是一个php脚本,因此html的创建方式如下:
$html = '
<html>
<head>
<meta name="twitter:image" content="'.$dest.'">
</head>
<body>
</body>
</html>
';
echo $html;
答案 0 :(得分:11)
这不会奏效。 &#39; imagecopymerge&#39;返回一个图像资源,该图像资源必须作为图像发送到浏览器,或者保存到服务器硬盘上,并带有&#39; imagejpeg&#39;。如果它直接发送到浏览器(第一个选项),则必须在HTML中引用此PHP文件。
所以基本上,在您的HTML中,使用postid参数引用PHP文件:
<meta name="twitter:image" content="image.php?postid='.$postID.'">
在文件image.php中创建你的文件并输出它(你还应该在这里为$ _GET [&#39; postid&#39;]添加一些验证码):
<?php
$dest = imagecreatefromjpeg('http://www.website.com/Some-images/'.$_GET['postid'].'.jpg');
$src = imagecreatefromjpeg('http://www.website.com/media/dog.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100);
header('Content-Type: image/jpg');
imagejpeg($dest);
?>
答案 1 :(得分:6)
您可以使用base64
$dest = imagecreatefromjpeg('http://www.website.com/Some-images/'.$postID.'.jpg');
$src = imagecreatefromjpeg('http://www.website.com/media/dog.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100);
$img = base64_encode($dest);
然后在标记
中使用该字符串<meta name="twitter:image" content="data:image/png;base64,<?php echo $img; ?>">
答案 2 :(得分:1)
如果要将PHP变量的内容放入某个HTML中,则需要将该变量echo
放入HTML属性中,方法是将其置于PHP代码块中。
这样的事情应该达到目标:
<meta name="twitter:image" content="<?php echo $dest; ?>">