【问题标题】:How can I pass an image in base64 string as a parameter to a Python script?如何将 base64 字符串中的图像作为参数传递给 Python 脚本?
【发布时间】:2020-10-11 15:52:44
【问题描述】:

我正在尝试在 python 脚本中将 base 64 中的字符串作为参数传递。

$request->current_image 是我在 base64 中的图像,我还有另一个参数 $email。 PHP代码是:

public function access(Request $request)
    {

   $output = exec("python login.py $request->current_image $email ");
   
   dd($output);
    }

我收到此错误:

exec(): 无法 fork [python login.py data:image/png;base64,iV.....

还有其他方法吗?

【问题讨论】:

  • 这个脚本是什么语言的?
  • 这不是一个真正的 Python 问题。问题是如何将数据从 PHP 传送到它使用exec 生成的进程。尽管完成这项工作可能需要调整 Python 脚本。如果不是您自己的代码,请查看文档; Python 极不可能期望以这种方式提供信息 - 它应该期望命令行参数中有一个 file name (在这种情况下,您可以让 PHP 编写一个临时文件首先),或者期待标准输入上的原始数据。
  • @KarlKnechtel - 只要 base64 没有嵌入换行符并且它的长度小于getconf ARG_MAX,它就可以工作。这是我系统上的 2097152,但结果可能会有所不同。 (假设这是 linux/mac)
  • 我想是这样,但这并不是命令行工具设计的推荐方法。
  • 在那个尾随...中有更多有趣的信息吗?你可以试试exec("python --version") 看看php(它的php?)是否可以找到python可执行文件。

标签: python php laravel image base64


【解决方案1】:

base64 编码的图像字符串具有特殊字符,例如 :,/,,

因此,首先您必须将 python 参数更改为字符串以获取正确的命令:

public function access(Request $request){
   $output = exec("python login.py '$request->current_image' '$email'");   
   dd($output);
}

并检查“无法分叉”错误的答案:https://stackoverflow.com/a/20649541/3121398

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 2022-12-09
    • 2016-09-15
    • 2021-01-15
    • 2016-01-08
    • 2016-04-21
    • 1970-01-01
    • 2023-03-29
    • 2010-09-06
    相关资源
    最近更新 更多