Как сделать “поделиться” картинкой созданной через imagepng?

Dima83

Новичок
У меня на сайте будет несколько вопросов, и при нажатии нужно чтобы вопрос отпечатывался на “холсте” и отправлялся на страницу в социальных сетях. Картинку я уже подготовил где будет размещаться вопрос. Код создания картинки с вопросом выглядит вот так:

PHP:
<?php
header("Content-Type: text/html; charset=utf-8");
$image = imagecreatefromjpeg('images/img.jpg');
$color_text = imagecolorallocate($image,255,255,255);
$text='Вопрос № 1';
imagettftext($image, 12, 0, 50, 25, $color_text, 'fonts/Forum-Regular.ttf', $text);
 
ob_start();
imagepng ($image);
$output = ob_get_contents();
ob_end_clean();
$img = "data: image/png;base64,".base64_encode($output)."";
//Чтобы проверить как будет отображаться картинка
//echo '<img id="photo" src="'.$img.'" />';
?>
Теперь полученные данные картинки с вопросом base64 мне нужно как-то добавить в атрибут content meta-тега где есть свойства og:image, чтобы при нажатии кнопки (пользователем) картинка вместе с вопросом отправлялась в соц.сети включая и описание.

Почему-то у меня не получается это сделать картинка не отправляется только текст. Я попытался прямую ссылку на картинку внедрить и протестировать все нормально отправляется вместе с изображением. А base64 никак.

Может я что-то делаю не правильно, подскажите как сделать так чтобы сгенерированная картинка отправлялась в социальные сети?

Код полностью.
HTML:
<?php
header("Content-Type: text/html; charset=utf-8");
$image = imagecreatefromjpeg('images/img.jpg');
$color_text = imagecolorallocate($image,255,255,255);
$text='Вопрос № 1';
imagettftext($image, 12, 0, 50, 25, $color_text, 'fonts/Forum-Regular.ttf', $text);
 

 
ob_start();
imagepng ($image);
$output = ob_get_contents();
ob_end_clean();
$img = "data: image/png;base64,".base64_encode($output)."";
//echo '<img id="photo" src="'.$img.'" />';

?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Пример шеринга</title>
<meta property="og:locale" content="ru_RU" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Назание статьи" />
<meta property="og:description" content="Описание статьи" />
<meta property="og:url" content="https://mysite.ru/rect7.php" />
<meta property="og:site_name" content="MYSITE.RU" /><meta property="article:published_time" content="2022-05-18T12:53:47+00:00" />
<!-- https://i.pinimg.com/originals/9e/c9/00/9ec9008c6c71983deadcca3c09b7f90f.jpg -->
<meta property="og:image" content="<?php echo $img; ?>" />
<meta property="og:image:width" content="800" /><meta property="og:image:height" content="492" />
<meta property="og:image:type" content="image/jpeg" />
<meta name="author" content="Автор" />

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:label1" content="Написано автором" />
<meta name="twitter:data1" content="Автор" />
<meta name="twitter:label2" content="Примерное время для чтения" />
<meta name="twitter:data2" content="3 минуты" />

</head>
<body>





<a href="https://vk.com/share.php?url=https://mysite.ru/rect7.php" data-modal-vkontakte onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;">
    ВК
</a>



<a href="https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&amp;service=odnoklassniki&amp;st.shareUrl=https://mysite.ru/rect7.php" data-modal-ok onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;">
        OK
</a>

</body>
</html>
 

WMix

герр M:)ller
Партнер клуба
я думаю тебе нужно создать для теста такой html

test.html
Код:
<img id="photo" src="https://mysite.ru/question-image.php" />
далее скрипт содержит голую картинку

question-image.php
PHP:
<?php
header("Content-Type: image/png");

$image = imagecreatefromjpeg('images/img.jpg');
$color_text = imagecolorallocate($image,255,255,255);
$text='Вопрос № 1';
imagettftext($image, 12, 0, 50, 25, $color_text, 'fonts/Forum-Regular.ttf', $text);
imagepng ($image);
ну и при публикации уже ссылаться на свою картинку
Код:
<meta property="og:image" content="https://mysite.ru/question-image.php" />
при условии, что она досягаема из вне
 

Dima83

Новичок
WMix, выполнил ваш пример, картинка отправляется только вконтакте вот ссылка с примером https://fan-klub.ru/rect1.php, а в одноклассниках картинка почему-то не отправляется. Не знаю в чем проблема, если ссылка на картинку обычная где в конце расширение jpg, то отправляется нормально и ВК и OK, вот другой пример с прямой ссылкой https://fan-klub.ru/rect2.php.
 

antonio

Moderator
Команда форума
$image = imagecreatefromjpeg('images/img.jpg');
Из чего создаешь, то и отправляешь.
 

WMix

герр M:)ller
Партнер клуба
я посмотрел api на одноклассниках и твоего способа (Open Graph) не увидел, ну те там json нужно строить, подписывать... или у тебя есть другое описание?

если jpg отправляется, чем не решение?
 
Последнее редактирование:
Сверху