問題タブ [dib]
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.
javascript - JavaScript、インプットストリーム、DIB?
DIB を入力ストリームにロードしてハンドルを取得し、それをすべて JavaScript (js) で取得する便利な方法はありますか?
.net - その COM オブジェクトを使用して、C++/COM ライブラリに実装された DIB を .NET クライアントに取得する方法
DIB を返すメソッドを含む C++/ATL で実装された COM オブジェクトがあります。この COM オブジェクトを使用する .NET アプリケーションも作成しています。両方を書いているので、COM オブジェクトからこの DIB を返す最善の方法を自由に決めることができます。明確にするために、ネイティブ Windows ハンドルを DIB またはバイト配列に返すのが最善でしょうか、または Windows DIB を .NET Image オブジェクトに簡単に移行する他の方法はありますか? そして、その質問に関連して、これが返された DIB を取得したら、どうすればそれを .NET Image オブジェクトに入れることができますか?
c++ - これは、ウィンドウの画面に大きなDIBを描画するための高速な方法です。
私はWindowsC++でプログラミングしています。画面にDIBを描画するための高速な方法を知りたいです。画像が引き伸ばされている可能性があります。
StretchDIBitsよりも高速で、SetDIBitsToDeviceよりも高速です。StretchBitsよりも高速です。
そして高いストレッチ品質で。
どうもありがとう!
windows - マウスカーソルでスクリーンショットをキャプチャ
次のコードを使用して、Windows でスクリーン ショットを取得しました。
ただし、マウスカーソルは表示されません。
どうすればカーソルを取得できますか? またはそれができるライブラリはありますか?
前もって感謝します。
delphi - TBitmap への DIB ヘッダーを含む Delphi DIB
この問題について、次の点にご協力をお願いいたします。
data: PByte
DIB データと DIBHeader を含むバイト配列 ( ) があります。
CPU 使用率を低く抑えながら DIB を TBitmap に変換する方法
http://files.codes-sources.com/fichier.aspx?id=43989&f=GdipApi.pasを試しましたが成功しませんでした。
DIB をメモリ ストリームに割り当てました。
Bitmap.LoadFromMemoryStream(DibMemStream) の前にどこかに DIB ヘッダーが書かれているはずだと思います。どこかわからない。
アイデアはありますか?
ありがとうございました !
c++ - CreateDIBSection で「十分なストレージがありません」というエラーが発生しますが、それでも機能するようです
CreateDIBSection() を呼び出すか、LR_CREATEDIBSECTION
フラグを指定して LoadImage() を呼び出して、アプリが DIB セクションを作成しようとすると、正常に返されます。返されるHBITMAP
値は有効であり、問題なく操作して表示できます。
ただし、GetLastError() を呼び出すと返さ8: Not enough storage is available to process this command.
れます。これは、最初の呼び出しから最後の呼び出しまで発生します。要求されたビットマップのサイズは重要ではないようです。800x600 または 16x16、同じ結果。関数呼び出しの直前では、GetLastError() はエラーを返しません。さらに、関数呼び出しの前に SetLastError(0) を呼び出しても同じ結果になります。
他の人が同様の質問をしているのを見つけましたが、CreateCompatibleBitmap() を使用していて、CreateDIBSection() に切り替えると問題が解決するか、または既に CreateDIBSection() を使用していて、返される結果が無効であることがわかりました。まったく機能していません。
動作しているように見えるので、それを無視する (そしていずれかの関数を呼び出した後に SetLastError(0) を呼び出す) ことができると考えていましたが、そうすることで見落としている微妙な問題がある可能性があります。
もちろん、ここに私が使用している基本的なコードの一部を示します。まず、LoadImage() の呼び出しです。これは、私が多くのことに使用する基本的なビットマップ クラスの一部であり、より関連性の高い側面を示すためにかなり単純化しました。
CreateDIBSection の呼び出しは、通常、レイヤード ウィンドウを更新するときに行われます。
私が完全に根拠のないものについてのポインタをいただければ幸いです。
directx - Win32 DIB でカラー ルックアップ テーブルを使用する正しい方法は何ですか?
16 ビット DICOM 画像 (16 ビット DIB としてメモリに読み込まれる) でウィンドウ レベリングを実行するコードを書いています。私のウィンドウ レベリング コードは完成しており、ソース ピクセル値を目的の最終ピクセル値にマップするルックアップ テーブルを生成することによって機能します。
よくわからないのは、このルックアップ テーブルを画像に適用する方法です。BITMAPINFO オブジェクトには、RGBQUAD[] タイプの「bmiColors」フィールドがあることがわかります。ルックアップ テーブルをこのプロパティに割り当てようとしましたが、効果がないようです。SetDIBColorTable 関数も試してみましたが、画面出力には何の影響もないようです。
私がやろうとしていること (ピクセル データ自体を変更するのではなく、ペイント中にルックアップ テーブルを適用する) は GDI でもサポートされていますか、実際にはピクセル データ自体をループしてピクセル値を 1 つずつ変更することになっていますか?
また、BitBlt 関数を使用するか SetDIBitsToDevice 関数を使用するかに違いはないようです。ここではどちらも同じように振る舞う傾向があります。
私が望むものを達成するのがより簡単であれば、私は DirectX を使用することにオープンです。私は以前にそれを使用したことがないので、サンプルコードが回答として提供されればいいでしょう。
私のコードはパフォーマンスが非常に重要であるため、より多くの労力/コードが必要になる場合でも、これを達成するための最速の方法を探しています。
image - ピクセルバッファからデバイスコンテキストにブリットするための最速の方法
こんばんは、
メモリバッファにいくつかの32ビット画像があり、デバイスコンテキストにすばやく「ブリット」したいと思っています。バッファは常に操作され、DCに繰り返しブリットする必要があるため、ここでは速度が問題になります。
バッファの色深度は32ビットであるため、すでにDIBで期待されるSetDIBits()形式になっています。ただし、SetDIBits()のビットマップターゲットを操作前にDCに選択することはできないため、これはかなり面倒です。したがって、DCのビットマップを常にスワップアウトし、SetDIBits()を呼び出し、ビットマップをDCにスワップバックしてから、DCをウィンドウのDCにブリットする必要があります。私には、これはCPUに大量のワークロードがあり、WindowsAPIの分岐が多すぎるように思えます。最適なパフォーマンスを得るには多すぎます。
画像の内容は絶えず変化するため、2D操作にデバイスコンテキストを使用する必要がない場合、またはテクスチャを表示する前にビデオメモリにテクスチャをアップロードする必要がない場合は、DirectXを使用することに興味があります。
私の質問は単純です(長い記事にもかかわらず)。メモリ内のピクセルバッファから画面に画像をブリットするための最速の方法は何でしょうか?DCのピクセルバッファへの直接アクセスは素晴らしいでしょうが、私はそれが起こらないことを知っています。
私の長い記事を読んでくれてありがとう。
winapi - CreateDIBitmap は白黒画像を作成します
CreateDIBitmap のトラブルシューティングを知っている人向け
私がそれを作成するとき、うまくいけばすべてのパラメータを正しく渡し、データ配列(ビット配列)を渡して作成します。この配列は、同じビットマップから取得されます (アイデアは、新しいコピーを作成することです; テスト目的で)。しかし、作成後 (正しいハンドルが返されます)、ビットマップは正しいですが、パレットは白黒です。色はありません。なんで?知るか?
c++ - GetDIBits 関数を使用して HBITMAP から受信した DIB データにどのくらいのメモリを割り当てる必要がありますか?
GetDIBits 関数を使用して HBITMAP から受信した DIB データにどのくらいのメモリを割り当てる必要がありますか?
GetDIBits 関数は、MSDN で次のように説明されています。
ただし、データ lpvBits を受信するためのバッファーは、GetDIBits を呼び出す前に割り当てる必要があります。これは、GetDIBits がこれを自動的に割り当てないためです。
問題は、DIB データを受信するためにどのくらいのメモリを割り当てる必要があるかということです。HBITMAP の width&height が Bmp_Width&Bmp_Height であるとします。ビットマップは 32 ビット (RGBA) です。