【发布时间】:2013-07-02 23:29:57
【问题描述】:
我正在尝试在内存中创建图像的副本并将其用作控制台进程的 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 看来,它似乎没有作为有效的图像文件写入 STDIN?
由于我是一个非常新手,我用谷歌搜索并在这里搜索以找到答案,但无法弄清楚。
如何将图像文件读入内存并将其用作控制台应用程序中的 STDIN(例如 imagemagick)。
非常感谢您的帮助!
【问题讨论】:
-
你为什么要颠覆imagemagick的文件读取能力???
-
@Michael Bray - 我想在内存中有一个文件的 tmp 副本,并且我的不同效果的任何更改都将仅应用于此副本。一旦我对更改感到满意,我就会保存最终文件。这应该避免过度写入/读取硬盘并提高性能。我对 C# 完全陌生,所以我对更多的 cmets 感到非常高兴。
标签: c# process console imagemagick stdin