問題タブ [bitmapsource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3254 参照

wpf - Image Source で使用できる唯一のタイプは BitmapSource ですか?

Image コントロールのコンテンツとして Bitmapsource オブジェクトを使用できますが、Bitmap オブジェクトしかない場合は、次の方法を使用して Bitmap を Bitmapsouce に変換すると、直接使用できます。

時間がかかります。Bitmap を直接使用する方法はありますか?

また、BitmapSource は直接解放できないようです。BitmapSouce が再び使用されなくなった後、すぐにメモリを解放するサンプル メソッドはありますか。

0 投票する
2 に答える
5739 参照

wpf - BitmapSource を WPF の画像ソースとして使用する

イベントによってソースの更新が必要であると判断されるたびにソース イメージを変更することで、XAML の Image (_browserScreenshot below) オブジェクトを更新しようとしています。今私はこれを持っています:

次に、次のようなイベント ハンドラーがあります。

このイベントが発生するたびに、新しいスクリーンショットが取得され、イメージのソース (ここでは _browserScreenshot と呼ばれます) コントロールが更新される必要があります。IsFrozen プロパティを変更するとエラーが発生し続けますが、これを正しく変更する方法がわかりません。よろしくお願いします。

0 投票する
1 に答える
2033 参照

wpf - TiffBitmapDecoder.FramesからTIFFページを取得できません-すべてのフレームはページ1です

複数ページのtiff画像を複数ページのXPSドキュメントに変換しようとしています。私が抱えている問題は、TiffBitmapDecoderとそのBitmapFramesにあります。

コードは次のとおりです。

これにより、正しいページ数のXPSが作成されます。ただし、すべてのページは、tiffの最初のページのレプリカです。実際、1つのフレーム(たとえば、dec.Frames [4])を取り出してディスクに書き込むと、最初のページのように見えます。

私はここで何を間違っているのですか?フレームは実際には画像の個々のページではありませんか?どうすればそれらを取り出して一緒に作業できますか?

0 投票する
1 に答える
1716 参照

wpf - BitmapSource の部分領域の描画

2D タイル ベースのゲーム用に WPF でレベル エディターを作成しています。Imageタイルセットファイルを読み込み、各タイルを適切な場所にレンダリングしてマップを再構築する最善の方法を見つけようとしています。

Image現在、 をとしてロードしており、マップを表示するコントロールのクラスBitmapSourceから派生しています。を取得できるようにメソッドCanvasをオーバーライドしています。ただし、画像のサブレクトのみを描画する適切なオーバーロードがないようです。画像全体を描画する必要があるようです。OnRenderDrawingContextDrawingContext.DrawImage

Imageのサブレクトを に描画したい場合、何を使用すればよいCanvasですか? または、以外のものを使用する必要がありCanvasますか?

0 投票する
1 に答える
11845 参照

wpf - WPF が大きな BitmapSource をメモリから確実に解放するにはどうすればよいですか?

システム: Windows XP SP3、.NET 3.5、4GB RAM、デュアル 1.6GHz

非常に大きな PNG を (ストーリーボード アニメーションを使用して) 読み込んで遷移させる WPF アプリケーションがあります。これらの PNG の解像度は 8190x1080 です。アプリケーションが実行されると、画像がキャッシュされているように見え、システム メモリが徐々に増えていきます。最終的にはシステムを停止させ、OutOfMemoryException をスローします。

これを解決するために私が現在取っている手順は次のとおりです。

1) アプリから BitmapSource オブジェクトを削除しています

2) BitmapSource をロードするときに、BitmapSource BitmapCacheOption を None に設定しています。

3) BitmapSource がロードされたら、それをフリーズしています。

4) ソースを使用するイメージへのすべての参照と、ソース自体への参照をすべて削除します。

5) 上記の手順が完了した後、手動で GC.Collect() を呼び出します。

WPFがこれらの画像のメモリにハングアップする理由と、それらの読み込みに使用されたメモリが適切に回復されるようにするための解決策を見つけたいと思っています。

0 投票する
3 に答える
9165 参照

c# - C# での画像読み込みメモリ リーク

大量の画像をロードするアプリケーションにメモリ リークの問題があります。私は C# にかなり慣れていないので、メモリ リークの問題に悩まされていた日々は過ぎ去ったと思いました。問題がわかりません - 正しく処理されていない管理されていないモジュールを使用している可能性がありますか?

私の問題を説明するために、問題の原因の核心を単純化し、これをクリーンなプロジェクトに移動しました。これはすべて、元のアプリケーションを反映していないばかげたコードであることに注意してください。テスト アプリケーションには 2 つのボタンがあり、2 つのイベントをトリガーします。

ボタン 1 - 作成: オブジェクトを datacontext に設定します。これにより、画像が読み込まれ、オブジェクトを DataContext に設定することで画像が維持されます。

ボタン 2 - クリーンアップ: 画像を再び保持する SillyImageLoader を保持している参照を手放すと、これは削除されると理解しています。また、ガベージ コレクションを明示的にトリガーして、参照を削除した直後にメモリの量を確認します。

テスト時に、974KB の jpeg 画像をロードしています。これの 30 個のビットマップ表現を保持すると、アプリケーションのメモリ使用量が ~18MB から ~562MB に増加します。Ok。しかし、クリーンアップを実行すると、メモリは最大 292MB までしか減少しません。Create+CleanUp を繰り返すと、さらに 250MB のメモリが残ります。だから明らかに何かがまだ誰かによって保持されています。

SillyImageLoader コードは次のとおりです。

何か案は?問題は BitmapSource にあるようです。ビットマップのみを保持すると、メモリ リークは発生しません。これを Image の Source プロパティに設定できるように BitmapSource を使用しています。これを別の方法で行う必要がありますか?もしそうなら、メモリリークの答えを知りたいです。

ありがとう。

0 投票する
1 に答える
1620 参照

c# - WPFイメージはBitmapSourceを表示しません

WPFとGDIを使用するのは初めてで、画像の表示に問題があります。私の最終的な目標は、露出のようなものを構築することです。これまでのところ、画面をグレー表示し、アクティブなHWNDをすべて収集して、すべてのウィンドウの画面をキャプチャします。今のところ、ソースを設定しようとしている単一のImage要素がありますが、何も表示されません。

完全なコードはここにあります:
http : //pastebin.com/m70af590-コード
http://pastebin.com/m38966750-xaml

私は今それを持っている方法が私がやろうとしていること(ループを実行して同じ画像に何度も何度も書き込む)にはあまり意味がないことを知っていますが、私はその画像に何かを持っていることを望んでいます終わり。

表示されているウィンドウのHWNDをハードコーディングしようとしましたが、それでも機能しません。

助けてくれてありがとう!

0 投票する
1 に答える
1502 参照

c# - BitmapSource からアルファを削除する

BitBlt() と CreateBitmapSourceFromHBitmap() を使用して、WPF アプリケーションの Image 要素に表示できる BitmapSource としてウィンドウをキャプチャします。しかし、何らかの理由で、キャプチャするアプリケーションのほとんどは透過的です。何が起こっているかのソースとキャプチャの画像を次に示します。

https://userpages.umbc.edu/~smyth1/images/screencap.PNG
(ソース: umbc.edu )

表示されているウィンドウの背景が灰色なので灰色です。私がどんな背景を与えても、ウィンドウは透けて見えます。

元の画像をより正確に反映するために、キャプチャした画像を取得するにはどうすればよいですか?

0 投票する
1 に答える
8950 参照

c# - BitmapSource.CreateがArgumentExceptionをスローするのはなぜですか?

ImageとBitmapSourceを使用して、生データから作成されたビットマップを取得してWPFに表示しようとしています。

ただし、BitmapSource.Createを呼び出すと、「値が期待される範囲内にありません」というArgumentExceptionがスローされます。これはこれを行う方法ではありませんか?私はその電話をきちんとかけていませんか?

0 投票する
1 に答える
106 参照

wpf - WPF-ボタンのオーバー状態からBitmapSourceを生成します

ボタンからうまく生成できBitmapSourceますが、それは常にボタンの通常の状態の画像にすぎません。

BitmapSourceボタンのオーバー状態を生成できるようにしたい。

コードを呼び出す VisualStateManager.GoToState((FrameworkElement)target, "MouseOver", true);前に呼び出して、BitmapSourceを生成してみました。GUIでボタンをオーバーステートに正しく変更しますが、BitmapSourceそれでも通常の状態のボタンの状態のままです。