как передать 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; ?>">