none
Compact FrameWork 2.0 のbitmapクラスを使用してStreamを変換する RRS feed

  • 質問

  • エミュレータ上で

    .NET Compact Frame 2.0を使用して

     

    System.Net.HttpWebRequest  webreq = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(url);
    System.Net.HttpWebResponse webres = (System.Net.HttpWebResponse)webreq.GetResponse();
    System.IO.Stream st = webres.GetResponseStream();
    Image bitmapData = new Bitmap(st);

     

    と、Httpで取得した画像データ(Stream)を

    Bitmapに変換したときに以下の例外が発生します。


    'System.InvalidCastException' の初回例外が System.Drawing.dll で発生しました。
    'System.NotSupportedException' の初回例外が System.dll で発生しました。

     

    Webカメラからのライブ映像を表示したいのですが

    例外が発生した時に1秒くらい遅延します。

     

    この例外はどうしても出るものでしょうか?

    原因などを知りたいです。

    マイクロソフトの回答など、知っている方がおられましたら

    ご教授、宜しくお願いします。

     

     

     

    VS2005

    .NET Compact Frame 2.0

     

    エミュレータはwindows mobile 5.0 poket PC

    2007年5月17日 10:22

回答

  • ネットワーク経由由来のストリームを渡していので、途切れる可能性が頻繁にあると想像されます。その場合、例外の発生は、タイムアウトの後になります。

    また、ドキュメント化されていませんが、GDI+ はランダムアクセス可能なストリームが渡されることを前提にしている(画像フォーマットによる)ので、たとえそのストリームがロバストであっても、貴殿のコードが動作するとは限りません。

     いったん、メモリなり、ファイルなりに読み込み、それから、Bitmapオブジェクトを作成するのが良いかと思います。

    2007年5月18日 6:34