2009-08-03 14 views
1

C#のWebブラウザーコントロールan applicationを使用してHTMLを表示しています。すべてのデータはデータベースから取得されるため、メモリ内のInline-CSSでフルページを生成し、ブラウザに送信しています。外部ファイルにアクセスせずにWebブラウザーコントロールに画像を表示

しかし、私は一時的なディレクトリではなく、ハードドライブにイメージを保存したくないため、問題と思われるイメージをサポートしたいと思います。私はdata: URI Schemeを知っていますが、それはあまりにも限られているようです。

私はうんざりしています。JavaScriptを使用してデータを本質的にミラーリングする、バイトストリームを使って、JavaScriptを使ってイメージを動的に生成できますか?または、GDI +を使用して画像を表示する他の方法がありますか?

必要に応じて画像を仮定することができます。つまり、必要に応じてユーザーに幅と高さを指定させることができますが、実際にはその位置を強制することはできません。私はまた、すべての画像を特定の形式で強制することができます。基本的にはこれを解決するのに役立ちます。

編集:VMLのようなものを乱用してビットマップデータを表示できますか?それはそうと、私は(IEでサポートされていないので、MSHTMLの両方で?)をキャンバスやSVGを使用することはできません

を編集2: VMLは動作しますが、プロセッサの負荷が非常識です。だから私はファイルを提供するために(cassiniのような)Webサーバーを実装するか、Silverlight approachを私の他の質問で試します。

答えて

2

アプリケーションに複雑なレイヤーを追加したい場合は、イメージを提供するために使用できる単純なWebサーバーを埋め込むことができます。 System.Net.HttpListenerを使用すると、必要に応じて画像を提供するようにアプリケーションを設定できます。これはうまくいくはずですが、ひどくハックするようです...

+0

hmmm ... That私のアプリケーションがポートでリッスンしていると不平を言うファイアウォールですが、127.0.0.1:unused_portに接続して画像を提供することができます。 –

2

img-tagは、source属性のインラインデータをサポートしています。したがって、イメージデータを取得し、base64エンコードしてsrc属性内に格納することができます。

Look here for an example. ogもっと多くの例の場合はhtml embed imageをGoogleに送信できます。

+0

data:schemeの問題は、古いInternet Explorerのバージョンではサポートされておらず、新しいものでは32kに制限されています:-( –

関連する問題