問題タブ [writeablebitmapex]
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.
c# - UI のスレッド表示で WriteableBitmap を生成
writablebitmapについて読んで見つけたものから、それを作成したスレッドとは別のスレッドで変更することはできません。しかし、UIスレッドとは別のスレッドで作成し、それをフリーズしてUIスレッドに解析して表示できるはずです。例:スレッドはオブジェクトにアクセスできません
ただし、これを行うと、「別のスレッドが所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません」と表示されます。ビットマップをフリーズしたとき、これは誰ですか?
c# - 大量の WriteableBitmap を保存するには?
さまざまな方法で変更する必要がある 400 以上の画像のセットを使用しています。最後に、ほぼ 1500 枚の画像が必要です。それらがすべて512 * 512pxであるとしましょう
最初にこの変更を適用して 1500 個の画像を取得し、このすべての画像をリストに保持して、アプリケーションですばやくアクセスできるようにしたい (読み込み時間なしで画像を切り替えられるようにしたい)
変更を適用するには、WriteableBitmapEx を使用します。
それを変更できるようにするには、この画像を WriteableBitmap にレンダリングする必要があり、OutOfMemoryException が発生します。
これが私がやっていることの簡単な例です:
私はこの例外についてよく読みました。追加できることを読みました
私の「foreach」内にあるかもしれませんが、これはロードに時間がかかると思います。
私が読んだことは、私が正しい方法で行っていないのではないか、別の方法を考えるべきだとも思いました. だからここに投稿しているのですが、何かヒントはありますか?
c# - Windows 10 で WriteableBitmapEx を使用してイメージ ピクセルの色を変更するパフォーマンスを向上させるにはどうすればよいですか?
現在、一連の画像をダウンロードし、ピクセルの色を赤、黄などに変更したい部分に取り組んでいます。調査を行ったところ、WriteableBitmapExというサードパーティ API に出会いました。次のコードを使用すると、完璧な結果が得られますが、10 個の画像で 4 ~ 5 分以上かかります。
コードを最適化してパフォーマンスを向上させ、画像のピクセル色を変換する時間を短縮する方法を誰かが提案できますか?
c# - C# OpenFileDialog ファイルを破棄する方法
イメージのパスを取得し、それをWPF アプリケーションのOpenFileDialog
イメージ ソース プロパティに設定するために使用します。imgSelected.Source = new BitmapImage(new Uri(filenameSteg, UriKind.Absolute));
問題は、そのファイルを後でもう一度開く必要があるということですが、ファイルが別のプロセスで使用されているため( System.IO.IOException
-> The process cannot access the file
pathToFile because it is being used by another process.
)、開くことができません。
後でアクセスする必要があるコードは次のとおりです。
これbitmapSource
は、その画像をに渡すために使用され、WriteableBitmap
そこからピクセルを通過します。
OpenFileDialog で開かれたFileを破棄する方法はありますか?
IDisposable にキャストしたり、using ブロックを使用したりしようとしましたが、これは永続的です。
編集 :
1-これを試しました(@ctacke回答):
filenameSteg
しかし、プロセスが別のプロセスによって既に使用されているというエラーが表示されます。これは、プロセスが後で破棄されても、同じファイル ( )を開こうとしているからですOpenFileDialog
。(または、少なくとも、それは私がそれを見る方法です。)
2-次にこれを試しました(@ctacke推奨リンクに基づく:
注:ここで を求めていることに注意してくださいfilenameSteg +1
。これは、メソッドの残りの部分をテストしたかったため、ファイルのコピーを作成し、その名前に 1 を追加しただけです。そうは言っても、filenameSteg
実際に使用すると、すでに使用されているという同じエラーが表示されましたが、以前にOpenFileDialog
.
3 - 開いた画像を破棄する必要のない別のアプローチを考えました:
で初めて画像を開くとき、画像OpenFileDialog
のバイト配列を変数に格納して、とバイト配列WriteableBitmap
を使用して を作成できるようにBitmapFactory
します。
このアプローチの問題は、一部の画像が正常に機能し、バイト配列を使用して を作成してそのWriteableBitmap
ピクセルを通過できることですが、それ以外の場合はAccessViolationException
: と表示されますAttempted to read or write protected memory. This is often an indication that other memory is corrupt.
。つまり、破棄の問題を回避しようとすると、別の問題が発生しました。