Console.In/Out/ErrorはTextReader/TextWriterであり、これはテキストデータの入出力には向いているものの、バイナリデータの入出力には不向きです。 標準ストリームでバイナリデータを扱いたい場合などにはOpenStandardInput/OpenStandardOutput/OpenStandardErrorの各メソッドを使います。

これらのメソッドではそれぞれ標準入力・標準出力・標準エラーに対応するStreamを取得することができます。 取得したStreamを使って直接読み書きをできるほか、取得したStreamからBinaryReader/BinaryWriterを作成してバイナリデータの読み書きを行うといったこともできます。

次の例では、標準入力から読み込んだ画像を水平方向に反転し、標準出力に書き込んでいます。

標準入出力のStreamを取得して画像の読み書きを行う
using System;
using System.Drawing;
using System.Drawing.Imaging;

class Sample {
  static void Main()
  {
    // 標準入力のStreamを取得して画像として読み込む
    using (var image = new Bitmap(Console.OpenStandardInput())) {
      // 画像を左右反転する
      image.RotateFlip(RotateFlipType.RotateNoneFlipX);

      // 標準出力のStreamを取得して加工した画像を書き込む
      image.Save(Console.OpenStandardOutput(), ImageFormat.Jpeg);
    }
  }
}
実行例
>sample.exe < sample.jpg > mirror.jpg