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