如何将 php 生成的图像传递到 html 元标记中
how to pass php generated image into html meta tag
我正在尝试将合并后的图像从 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;
如果要将 PHP 变量的内容放入某些 HTML 中,则需要将变量 echo
放入 HTML 属性中,方法是将其放入PHP 代码块。
这样应该可以达到目的:
<meta name="twitter:image" content="<?php echo $dest; ?>">
这行不通。 'imagecopymerge' returns an image resource, which has to be sent to the browser as an image or saved to the server hard disk a file with 'imagejpeg'。如果它直接发送到浏览器(第一个选项),则必须在 HTML.
中引用此 PHP 文件
所以基本上,在您的 HTML 中,引用一个 PHP 文件,您的 postid 参数:
<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);
?>
你可以使用 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; ?>">
我正在尝试将合并后的图像从 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;
如果要将 PHP 变量的内容放入某些 HTML 中,则需要将变量 echo
放入 HTML 属性中,方法是将其放入PHP 代码块。
这样应该可以达到目的:
<meta name="twitter:image" content="<?php echo $dest; ?>">
这行不通。 'imagecopymerge' returns an image resource, which has to be sent to the browser as an image or saved to the server hard disk a file with 'imagejpeg'。如果它直接发送到浏览器(第一个选项),则必须在 HTML.
中引用此 PHP 文件所以基本上,在您的 HTML 中,引用一个 PHP 文件,您的 postid 参数:
<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);
?>
你可以使用 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; ?>">