图像文件的C#InMemoryCopy作为过程的标准输入

图像文件的C#InMemoryCopy作为过程的标准输入,c#,process,console,imagemagick,stdin,C#,Process,Console,Imagemagick,Stdin,我试图在内存中创建一个映像的副本,并将其用作控制台进程的STDIN 创建InMemoryCopy: using (FileStream fs = File.OpenRead(image)) { fs.CopyTo(inMemoryCopy); } 启动进程并输入标准数据: p.StartInfo.Arguments = " jpg:fd:0" + " -resize 500" + " \"" + tmpFile + "\""; p.Start(); //Reads in p

我试图在内存中创建一个映像的副本,并将其用作控制台进程的STDIN

创建InMemoryCopy:

using (FileStream fs = File.OpenRead(image))
{
   fs.CopyTo(inMemoryCopy);
}
启动进程并输入标准数据:

p.StartInfo.Arguments = " jpg:fd:0" +
   " -resize 500" +
   " \"" + tmpFile + "\"";

p.Start();
//Reads in pbm file.
using (var streamReader = new StreamReader(inMemoryCopy))
{
  p.StandardInput.Write(streamReader.ReadToEnd());
  p.StandardInput.Flush();
  p.StandardInput.Close();
}
我遇到的问题是imagemagick noww不再将文件识别为图像?使用的文件是.jpg,但从streamReader看,它似乎没有作为有效的图像文件写入STDIN

由于我是一个非常新手,我在谷歌上搜索了一下,想找到一个答案,但没有找到答案

如何将图像文件读入内存并在控制台应用程序(例如imagemagick)中将其用作标准输入


非常感谢您的帮助

StreamReader是一种文本阅读器。您可能想要将二进制数据写入stdin基流。据此:

你可以做:

fs.CopyTo(p.StandardInput.BaseStream)

你为什么要破坏imagemagick读取文件的能力?@Michael Bray-我想在内存中保存一份文件的tmp副本,我的不同效果所做的任何更改都只会应用于该副本。一旦我对更改满意,我将保存最终文件。这样可以避免对硬盘的过度写入/读取,并提高性能。我是C#的新手,所以我很高兴有更多的评论。非常感谢链接,它为我指明了正确的方向。帮了大忙!