как передать php сгенерированное изображение в метатег html

Im пытается передать объединенное изображение с 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% уверен, что вы даже можете передать необработанное изображение вообще в атрибут содержимого мета-тега, но я думаю, что должен быть способ сделать это, и я также думаю, что это то, что вызывает изображение не показывать. Я открыт для решения html/css, если решение php невозможно. Я застрял на этом некоторое время, поэтому любые предложения и вклад, которые у вас могут быть, будут высоко оценены. Спасибо!

редактировать

Я должен добавить, что это PHP-скрипт, поэтому HTML-код создается так:

$html = '

<html>
<head>

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

</head>
<body>

</body>
</html>

';

echo $html;

3 ответов


это не сработает. 'imagecopymerge' возвращает изображение ресурса, который должен быть отправлен в браузер в виде изображения или сохранен на жестком диске сервера файл с 'imagejpeg'. Если он напрямую отправляется в браузер (первый вариант), этот PHP-файл должен быть указан в HTML.

Итак, в основном, в вашем HTML, ссылка на файл PHP, с вашим параметром postid:

<meta name="twitter:image" content="image.php?postid='.$postID.'">

в файл изображения.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, вам нужно echo переменная в атрибут HTML, поместив ее внутри блока кода PHP.

что-то вроде этого должно достичь цели:

<meta name="twitter:image" content="<?php echo $dest; ?>">