【问题标题】:php base64 encode imagecreatetruecolorphp base64 编码 imagecreatetruecolor
【发布时间】:2013-01-13 07:25:53
【问题描述】:

我有一个生成图像然后将图像输出为 png 的 php 脚本。

$img = imagecreatetruecolor($graphWidth,$graphHeight);
...
*drawing routines*
...
header("Content-type: image/png");
imagepng($img);

我现在需要的是让 php 脚本对图像数据进行 base64 编码并输出该字符串(这样我最终可以将该编码数据传递给一个 java 脚本,该脚本对该图像进行解码并将其添加到生成的 pdf 中)。

我已经多次尝试使用其他 stackoverflow 帖子/答案等来让它自己工作,但我对这项技术的了解还不够,无法让它发挥作用。

有人可以帮我解决这个问题吗?

提前致谢,

克里斯

【问题讨论】:

  • 您是如何尝试将其编码为 base64 的?或者你在用 Javascript 解码时遇到问题?
  • 我正在使用 AJAX 调用来设置 html 图像标签的 src ... document.getElementById("theGraphImg").src = "graphIt.php";当我尝试像这样编码 $img 时: echo base64_encode($img); ...我提醒(xmlhttp.responseText)...我得到了一些我被告知不是我需要的时髦字符。
  • 你的意思是像那些符号和标志这样非常时髦的字符? base64_encode 之后应该只有字母数字字符
  • 是的,我得到了非字母数字字符。
  • 嗯,我认为您应该向我们展示更多代码,例如 php、javascript 和 html。只需要必要的部分就可以了。

标签: php base64 encode


【解决方案1】:

这不起作用的原因是 $img 中的图像是资源,而不是实际的 PNG 图像。当你调用imagepng()时,它会输出图像。

我要做的是创建一个输出缓冲区,然后对其进行 base-64 编码。

ob_start();
imagepng($img);
$buffer = ob_get_clean();
ob_end_clean();
echo base64_encode($buffer);

不要忘记更改您的 Content-Type 标头,因为它不再是 image/png

【讨论】:

    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 2014-11-29
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多