这个问题源于我对 base64 字符串的实际含义缺乏了解。
在 phantomjs 运行的 javascript 文件中,我可以将 base64 图像直接写入控制台,如下所示:
var base64image = page.renderBase64('PNG');
console.log(base64image);
在运行 phantomjs 的 c# 代码中,我可以将控制台输出转换回字节并将图像写入响应,如下所示:
var info = new ProcessStartInfo(path, string.Join(" ", args));
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
info.CreateNoWindow = true;
var p = Process.Start(info);
p.Start();
var base64image = p.StandardOutput.ReadToEnd();
var bytes = Convert.FromBase64CharArray(base64image.ToCharArray(), 0, base64image.Length);
p.WaitForExit();
context.Response.OutputStream.Write(bytes, 0, bytes.Length);
context.Response.ContentType = "image/PNG";
这似乎避免了我遇到的文件锁定问题。