【问题标题】:Pass Base64 jpeg image to og:image将 Base64 jpeg 图像传递给 og:image
【发布时间】:2013-08-29 21:42:35
【问题描述】:

我的网站上有运行时生成的图像,我使用

将其显示在 html 中
<img src="data:image/jpeg;base64,<!-- base64 data -->" />

现在,我想让 Facebook 获取此图像,但如果我对 og:image 元标记执行相同操作,则 facebook 调试器会给我一个错误。有什么解决办法吗?

<meta property='og:image' content='data:image/jpeg;base64,<!-- base64 data -->'/>

当然,我想避免永久保存文件,因为它们总是不同的,而且很快就会变得太拥挤

【问题讨论】:

    标签: php html facebook base64


    【解决方案1】:

    打开图表需要一个 URL。

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

    【讨论】:

    • 怎么样,我可以这样做吗?我试过这个$temp = tmpfile(); fwrite($temp, "data:image/jpeg;base64,".$data); 但是我有资源。
    • 临时文件不会一直可用。它们可能随时被删除。
    【解决方案2】:

    将其粘贴到一个 php 文件中,然后将其回显:

    <meta property='og:image' content='decoder.php?data=<!-- base64 data -->'/>
    

    解码器.php:

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

    编辑 确保出于安全原因检查来源。

    【讨论】:

    • 这似乎是一个很好的解决方案。就一个问题。 decoder.php的url会不会太长?
    • 在新浏览器中应该没有问题(对于 fb 来说!)
    • @exim 我有以下错误:414 (Request-URI Too Large)
    • @neoDev 是的,我也收到 414:stackoverflow.com/questions/2891574/…(提示:使用较小的图像或更改服务器配置)
    • @AugustinRiedinger 只需将端点更改为 nodeJS 端点。语言并不重要,它只是做一个获取请求。这是非常低效的,但却是一个有趣的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2023-01-03
    • 2014-05-19
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多