0

C# Windows フォーム アプリケーションを使用して、ローカルの HTML ファイルをビットマップ イメージに変換しようとしています。そのために、メモリ ストリームを使用して HTML ファイルを読み込んでいます。しかし、メモリ ストリームを Bitmap オブジェクトに渡した後、「パラメータが無効です」と表示されます。

以下はサンプルコードです

MemoryStream stm = new MemoryStream(data); ビットマップ f_Bitmap = (ビットマップ)Image.FromStream(stm);

HTMLファイルをビットマップ画像に変換する方法を教えてください。

ありがとう。

4

4 に答える 4

1

いつでも WebBrowser オブジェクトを使用できます (詳細については、こちらを参照してください)。

    public void WBCapture()
    {
        WebBrowser wb = new WebBrowser();
        wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);

        wb.ScrollBarsEnabled = true;
        wb.Width = 800;
        wb.Height = 600;
        wb.DocumentText = @"<b>Hello</b> <i>World</i>!!!";
        // Or you can navigate to:
        // wb.Navigate("http://mydocmentsurl.com");
    }

    void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        WebBrowser wb = (WebBrowser)sender;

        using (Graphics graphics = wb.CreateGraphics())
        using (Bitmap bitmap = new Bitmap(wb.Width, wb.Height, graphics))
        {
            Rectangle bounds = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
            wb.DrawToBitmap(bitmap, bounds);
            bitmap.Save(@"C:\caputre.png", ImageFormat.Png);
        }
    }
于 2012-12-01T07:19:19.940 に答える
0

私の説明は、あなたが受け取ったエラーに関するものです:

エラーをスローしている理由は、HTMLテキストをファイルからストリームにプッシュしただけであり、FromStreamがデータを使用すると、データの形式がビットマップではないか、十分ではないことがわかります

于 2012-07-09T13:28:09.693 に答える
0

HTML ファイルの内容をビットマップとして保存したい場合、バイトを単にビットマップ オブジェクトに入れることはできません。WebBrowser オブジェクトを使用して手動で描画する必要があります。それをまとめた記事がこちら。

于 2012-07-09T13:31:42.677 に答える
-1

これは、あなたが話している HTML ファイルが画像ファイルへの直接リンクである限り機能します。

            var request = (HttpWebRequest) WebRequest.Create(IMAGE_URL);

            using (var stream = request.GetResponse().GetResponseStream())
            {
                using (var image = Image.FromStream(stream))
                {
                    var bitmap = new Bitmap(image);
                    //use or return bitmap, image will automatically get disposed
                }
            }

IMAGE_URL を自分の URL に置き換えます。

HTML ファイルに URL がテキストとして含まれている場合は、それを解析する必要があります。

このファイルがローカルの場合、単純に FileStream (または FileReader) を使用してローカル ファイルのストリームを取得できます (これは、WebRequest の GetResponseStream に似ています)。

ご不明な点がございましたら、お知らせください。

それが役に立てば幸い。

于 2012-07-09T13:25:22.450 に答える