我试图将合并后的图像从 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% 肯定你甚至可以将原始图像传递到元标记的内容属性中,但我认为应该有一种方法可以做到这一点,我也认为这是是什么导致图像不显示。如果无法使用 php 解决方案,我愿意接受 html/css 解决方案。我已经坚持了一段时间,因此非常感谢您提出的任何建议和意见。谢谢!
编辑
我应该补充一点,这是一个 php 脚本,因此 html 是这样创建的:
$html = '
<html>
<head>
<meta name="twitter:image" content="'.$dest.'">
</head>
<body>
</body>
</html>
';
echo $html;
最佳答案
这行不通。 ' imagecopymerge ' 返回一个图像资源,必须将其作为图像发送到浏览器或将文件保存到服务器硬盘上带有 ' imagejpeg 的文件'.如果它直接发送到浏览器(第一个选项),则必须在 HTML 中引用此 PHP 文件。
基本上,在您的 HTML 中,使用您的 postid 参数引用 PHP 文件:
<meta name="twitter:image" content="image.php?postid='.$postID.'">
在文件 image.php 中创建您的文件并输出它(您还应该在此处为 $_GET['postid'] 添加一些验证代码):
<?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);
?>
关于php - 如何将 php 生成的图像传递到 html 元标记中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189043/