将Base64格式的jpeg图片传递给og:image

13

我有一张在我的网站上动态生成的图片,并且我使用HTML显示它

I have image that is being generated in runtime on my website and I display it in html using

<img src="data:image/jpeg;base64,<!-- base64 data -->" />

现在,我希望 Facebook 获取这张图片,但如果我对 og:image 元标签执行相同的操作,Facebook 调试器会给出错误。有任何解决方案吗?

<meta property='og:image' content='data:image/jpeg;base64,<!-- base64 data -->'/>
当然,我希望避免永久保存文件,因为它们总是不同的,而且很快就会变得过于拥挤。
2个回答

14
将其粘贴到一个 PHP 文件中,该文件会将其输出:
    <meta property='og:image' content='decoder.php?data=<!-- base64 data -->'/>

decoder.php:

    <?php
        echo base64_decode($_GET['data']);
    ?>

编辑 出于安全考虑,请确保检查源代码。


这似乎是一个不错的解决方案。只有一个问题,decoder.php 的 URL 会不会太长? - Vuk Stanković
在新的浏览器中(以及对于Facebook),这不应该是一个问题。 - exim
2
@exim 我遇到了以下错误:414(请求URI过长) - neoDev
@neoDev 是的,我也遇到了414错误:https://dev59.com/iXE85IYBdhLWcg3wNgrk (提示:使用较小的图像或更改服务器配置) - Mars Robertson
@AugustinRiedinger 只需将端点更改为 nodeJS 端点即可。语言并不重要,只是执行 get 请求而已。这种方法效率非常低,但是是一个有趣的解决方案。 - Frank Robert Anderson

4

开放图谱需要一个URL。

您可以尝试将base64保存为临时图像。


怎么样才能做到这一点? 我尝试了以下方法:`$temp = tmpfile(); fwrite($temp, "data:image/jpeg;base64,".$data);`但是然后我得到一个资源。 - Vuk Stanković
临时文件并不总是可用的。它们可能随时被删除。 - Rami Assi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接