【问题标题】:PHP imagecreatefromstring() doesn't work when i enter a base64 decoded value当我输入 base64 解码值时 PHP imagecreatefromstring() 不起作用
【发布时间】:2021-12-30 16:54:59
【问题描述】:

所以,我正在使用以下代码:

$currentIMG = imagecreatefromstring(base64_decode($img));

其中 $img 是一个 base64 字符串。当我回显 base64_decode($img) 时,它向我显示了一个字符串(应该如此),但是当我使用 imagecreatefromstring() 时,它显示以下错误:

致命错误:未捕获的错误:GdImage 类的对象不能被 转成字符串

我可以保证base64字符串没有损坏,因为它适用于在线base64到图像转换器,所以我不知道是什么问题。

提前致谢!

代码:

function base64toImage($img) {
    $currentIMG = imagecreatefromstring(base64_decode($img));
    echo $currentIMG;       
}

【问题讨论】:

  • 但是字符串里面是什么?它是通常在 png/jpeg 中的原始二进制字符串吗?
  • 似乎ether $img 不包含字符串或错误不是来自这一行。贴出周围的代码。
  • i.imgur.com/LLxZAgM.png 这是base64解码
  • 您确定错误中提到的行号是针对此imagecreatefromstring 行吗?因为听起来从字符串到 GD 对象 的转换很顺利,但是稍后您尝试将对象强制转换为字符串(这会导致错误)
  • 现在我认为我有一个配置问题,因为我创建了一个新的 php 文件,我使用具有参数的 imagefrompng() 函数运行该文件。来自我电脑的 PNG 图像,它显示相同的错误

标签: php base64


【解决方案1】:

而不是做:

echo $currentIMG;

尝试将GDImage 打印为字符串,请使用以下内容:

Header('Content-type: image/png');
imagepng($currentIMG);

【讨论】:

  • 它有帮助。但在我回声之前,它显示了类似 [image resurse #7]
  • 可能是,我不确定 GDImage 是否有 __toString 方法,但无论哪种方式,您都不会尝试打印它。对象本身不是图像格式,您需要 imagepngimagejpeg 或他们的姐妹之一将其实际转换为可用格式。
猜你喜欢
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多