問題タブ [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.

0 投票する
0 に答える
172 参照

c# - C# 画像 /xmp/projectionType setquery エラー: (画像メタデータ /xmp/projectionType を追加)

私の目標は、jpeg 画像の"/xmp/projectionType " メタデータに値を設定することです。

次のコードで「text/descryption 」を設定できますが、 「/xmp/ProjectionType」の値を設定しようとするとエラーがスローされます

エラー:

型 'System.ArgumentException' の未処理の例外が PresentationCore.dll で発生しました

追加情報: 値が期待される範囲内にありません。

「/xmp/projectionType 」を挿入する方法は?

0 投票する
0 に答える
436 参照

c# - Rgba16 UWP へのエンコード時に、割り当てられたバッファーが不十分です

次のコードを使用して、Textblocks を子として含む Canvas コントロールをエンコードしていますが、

私のコード

byte[] pixelsにエンコードしたいほど十分に大きくないバッファであることはわかっていBitmapPixelFormat.Rgba16ます。BitmapPixelFormat.Rgba8またはにエンコードするときにエラーは発生しませんBitmapPixelFormat.Bgra8

以下を使用してバッファを計算しようとしましたが、空の白いビットマップしか生成されません。

BitmapPixelFormat.Rgba16画質を上げたいので使いたいです。これを適切に行う方法は?ありがとう。

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

c# - BitmapImage から Bitmap への例外のスロー

StackOverflow で見つけた関数をプロジェクトに使用します: https://stackoverflow.com/a/6484754/9535211
この関数の目的は、System.Windows.Media.Imaging.BitmapImage を System.Drawing に変換することです。ビットマップ。

それはかなりうまく機能しますが(本当に重い場合でも)、呼び出されるたびに 例外をスロー
します:

enc.Save(アウトストリーム);

消えるようにする方法はありますか?
ご協力いただきありがとうございます !

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

.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 の明示的なシャットダウンに関するコメントは見当たりません。