You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#应用中不通过磁盘读写直接将图像作为参数传给Python脚本

C# 向Python子进程传输内存图像流的实现方案

你可以通过重定向子进程的标准输入流,直接把图像二进制数据传递给Python脚本,完全跳过磁盘写入步骤,大幅提升运行效率。

修改后的C#参考代码

var psi = new ProcessStartInfo();
psi.FileName = @"python_interpreter_path";
var script = @"my_python_script_path";
psi.Arguments = script;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
// 新增配置:启用标准输入重定向
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;

var errors = "";
var results = "";

using (var process = Process.Start(psi))
{
    // 替换为你自己的逻辑:将内存中的图像对象编码为jpg/png格式的字节数组
    byte[] imageBinary = GetImageBinaryFromMemory(); 
    
    // 将图像二进制数据写入Python进程的标准输入
    using (var stdin = process.StandardInput.BaseStream)
    {
        stdin.Write(imageBinary, 0, imageBinary.Length);
    }
    
    // 读取Python脚本的输出和错误信息
    errors = process.StandardError.ReadToEnd();
    results = process.StandardOutput.ReadToEnd();
    
    process.WaitForExit();
    Console.WriteLine(errors);
    Console.WriteLine(results);
}

关键注意事项

  • 你需要自行实现GetImageBinaryFromMemory()方法,编码格式需要和Python脚本的解码逻辑保持一致即可。
  • 写入完成后必须关闭标准输入流(上述代码通过using语法自动释放),否则Python进程会一直等待输入结束,造成阻塞。
  • 如果传输的图像体积较大,建议改为异步读取标准输出和标准错误,避免缓冲区满导致的死锁问题。

内容的提问来源于stack exchange,提问作者Felipe Cunha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 02:24:02