如何将php生成的图像传递给html元标记

Gar*_*aye 9 html php meta-tags php-gd

我试图将合并后的图像从php传递到html元标记(如果你想知道的话,可以推送一个推特摘要卡)但是图像的数据没有被传递.当我运行此代码时,我从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); 
Run Code Online (Sandbox Code Playgroud)

HTML

<meta name="twitter:image" content="'.$dest.'">
Run Code Online (Sandbox Code Playgroud)

我不是100%确定你甚至可以将原始图像传递到元标记的content属性中,但我认为应该有办法做到这一点,我也在想这就是造成这种情况的原因图像不显示.如果不能使用php解决方案,我会接受html/css解决方案.我已经坚持了一段时间,所以你可能会有任何建议和意见,将会非常感激.谢谢!

编辑

我应该补充一点,这是一个PHP脚本,所以html是这样创建的:

$html = '

<html>
<head>

<meta name="twitter:image" content="'.$dest.'">

</head>
<body>

</body>
</html>

';

echo $html;
Run Code Online (Sandbox Code Playgroud)

Ree*_*eno 11

这不行.' imagecopymerge '返回一个图像资源,它必须作为图像发送到浏览器或者使用' imagejpeg ' 保存到服务器硬盘.如果它直接发送到浏览器(第一个选项),则必须在HTML中引用此PHP文件.

基本上,在您的HTML中,使用postid参数引用PHP文件:

<meta name="twitter:image" content="image.php?postid='.$postID.'">
Run Code Online (Sandbox Code Playgroud)

在文件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);
?>
Run Code Online (Sandbox Code Playgroud)


小智 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);
Run Code Online (Sandbox Code Playgroud)

然后在标记中使用该字符串

<meta name="twitter:image" content="data:image/png;base64,<?php echo $img; ?>">
Run Code Online (Sandbox Code Playgroud)