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

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

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

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

Class Sample
  Shared Sub Main()
    ' 標準入力のStreamを取得して画像として読み込む
    Using image As New Bitmap(Console.OpenStandardInput())
      ' 画像を左右反転する
      image.RotateFlip(RotateFlipType.RotateNoneFlipX)

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