C#InMemoryCopy的Image文件为StandardInput进程

时间:2013-07-04 23:06:59

标签: c# process console imagemagick stdin

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

创建InMemoryCopy:

using (FileStream fs = File.OpenRead(image))
{
   fs.CopyTo(inMemoryCopy);
}

启动进程并输入STDIN:

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看来它似乎不能作为有效的Image文件写入STDIN?

由于我是一个非常新手,我用Google搜索并搜索到这里寻找答案,但无法弄清楚这一点。

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

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

StreamReader是一个文本阅读器。您可能希望将二进制数据写入stdin基本流。根据这个:Can i put binary in stdin? C#

你可以这样做:

fs.CopyTo(p.StandardInput.BaseStream)