問題タブ [bitmapencoder]
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# - C# 画像 /xmp/projectionType setquery エラー: (画像メタデータ /xmp/projectionType を追加)
私の目標は、jpeg 画像の"/xmp/projectionType " メタデータに値を設定することです。
次のコードで「text/descryption 」を設定できますが、 「/xmp/ProjectionType」の値を設定しようとするとエラーがスローされます
エラー:
型 'System.ArgumentException' の未処理の例外が PresentationCore.dll で発生しました
追加情報: 値が期待される範囲内にありません。
「/xmp/projectionType 」を挿入する方法は?
c# - Rgba16 UWP へのエンコード時に、割り当てられたバッファーが不十分です
次のコードを使用して、Textblocks を子として含む Canvas コントロールをエンコードしていますが、
私のコード
byte[] pixels
にエンコードしたいほど十分に大きくないバッファであることはわかっていBitmapPixelFormat.Rgba16
ます。BitmapPixelFormat.Rgba8
またはにエンコードするときにエラーは発生しませんBitmapPixelFormat.Bgra8
以下を使用してバッファを計算しようとしましたが、空の白いビットマップしか生成されません。
BitmapPixelFormat.Rgba16
画質を上げたいので使いたいです。これを適切に行う方法は?ありがとう。
c# - BitmapImage から Bitmap への例外のスロー
StackOverflow で見つけた関数をプロジェクトに使用します: https://stackoverflow.com/a/6484754/9535211
この関数の目的は、System.Windows.Media.Imaging.BitmapImage を System.Drawing に変換することです。ビットマップ。
それはかなりうまく機能しますが(本当に重い場合でも)、呼び出されるたびに
例外をスロー
します:
enc.Save(アウトストリーム);
消えるようにする方法はありますか?
ご協力いただきありがとうございます !
.net - これ以上 Dispatcher を作成できません。リソースが不足していますか?
私たちのアプリケーションでは、PngBitmapEncoder を使用して PNG 画像をエンコードし、別のスレッド\タスクに保存しています。アプリケーションを数日実行した後、Dispatcher を Encoder から作成できず、エラーがスローされることがわかりました
コマンドを処理するのに十分なストレージがありません
そして、以下のコールスタックを持っています
.Net はオープン ソースで利用できるため、Dispatcher コンストラクター内のどの行がエラーをスローしているのか気になりました
アップデート
.net オープン ソースからのコンストラクター コードを更新しました。dispatcher.cs はこちらから入手できますhttps://referencesource.microsoft.com/#WindowsBase/Base/System/Windows/Threading/Dispatcher.cs,078d6b27d9837a35
調査の結果、約 15000 回の反復後に問題が発生することがわかりました (反復ごとに新しいスレッドが作成され、PngBitmapEncoder が呼び出されます)。その後、これが Global Atom Table 制限 (0x4000 または 16384) にリンクされていることがわかりました。グローバル アトム テーブルの詳細については、https://docs.microsoft.com/en-us/archive/blogs/ntdebugging/identifying-global-atom-table-leaksをご覧ください。
毎回作成されるディスパッチャはグローバル アトム テーブルにエントリを作成し、スレッドの終了時にこのエントリはクリアされません。これにより、グローバル アトム テーブルでリークが発生し、最大制限に達すると、「ストレージが不足しています....」というエラーがスローされます。これは、Microsoft の Dispatcher の取り扱いに問題があるようです。PngBitmapEncoder のドキュメントでさえ、Dispatcher の処理と Dispatcher の明示的なシャットダウンに関するコメントは見当たりません。