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

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

python - Pygame エラー: DIB セクションを作成できませんでした

Web サイト ( http://pygame.org/download.shtml )のダウンロード ページから pygame (python モジュール) をダウンロードしました。「pygame-1.9.1.win32-py2.7.msi」というパッケージを選択しました。 . プログラムを実行しようとすると、次のエラーが発生しました。

これが何を意味するのかわかりません。誰かが私を助けてくれますか?

64 ビットの Windows 7 hp ラップトップを使用しています。問題のプログラムは、「ラングトンのアリ」を視覚化する試みであり、次のようになります。

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

c++ - MFC BitBlt および SetDIBits と SetBitmapBits の比較

バイトの BGRA 配列として格納されたビットマップがあります。これは、ビットマップを描画するために使用してきたコードです。

配列内のピクセルの実際のコピーは、次のように行わtranslatedImageれます。

次に、さらに処理を行った後、ソース CDC として呼び出しpDC->StretchBltますdispDC。ディスプレイも 32bpp に設定されているため、ローカルにログインすると問題なく動作します。

リモート デスクトップでログインすると、ディスプレイが 16bpp になり、画像が乱れます。犯人はSetBitmapBits; translatedImageつまり、それが機能するためには、表示したいものの 16bpp バージョンを適切に入力する必要があります。これを自分で行うのではなく、ドキュメントを検索して、SetDIBits私が望むように聞こえるものを見つけました。

SetDIBits 関数は、指定された DIB で見つかったカラー データを使用して、互換ビットマップ (DDB) にピクセルを設定します。

私の場合、DIB は 32bpp RGBA 配列で、DDB はdispBMPで作成したものCreateCompatibleBitmapです。

への呼び出しの代わりにSetBitmapBits、これが私がしたことです:

ただし、r常にゼロであり、当然、ウィンドウには何も表示されません。コードの何が問題になっていますか?

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

c++ - C++: Hbitmap/BITMAP を .bmp ファイルに

わかりました、全体の話は、私は C++ で Leptonica+Tesseract OCR を使用してスクリーンショットを撮り、それを *.bmp ファイルに保存してから、それを OCR にロードしようとしています。これを頻繁に行う必要はありませんが、スクリーンショット データを直接 Leptonica PIX 構造にコピーできないように見えるため、最初にファイルに保存する必要があります..実際には、これに対する解決策が望ましいでしょう.

これは私がオンラインで見つけたコードで、私を助けようとしています。

スクリーン キャップ:

関数を書き込もうとする:

何年にもわたって人々の投稿から恥知らずにコピーされました。Ok!私が直面している問題は、LPBITMAPINFOHEADER で変換または使用できるグローバルにアクセス可能なハンドルに Hbitmap を GlobalAlloc する方法を理解できないようです。lpbi が作成されるとすぐに、Visual Studio 2012 のデバッグで、その中のすべてのフィールドが「メモリを読み取れません」というエラーになります。作成されているにもかかわらず、アクセスできません。

解決策.. メモリ内のスクリーン キャプチャから PIX に直接移動.. ビットマップに保存し、定期的に作成して読み取る方法を見つける.. より理にかなった完全に別の方法を見つける..

最初の方がいいのですが、これで解決策を求めています.2番目または3番目..

さらに情報が必要な場合は、提供を試みることができます。これはほとんどの場合、「このようなコードをこれまでやったことがなく、クラスで教えられていなかったので、勉強しながら学ぼうとしている」ということになります。

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

c++ - ビットマップ/DIB データの作成、表示、およびアクセス (GetBitmapBits() なし)

古い学校の MFC Windows CE プログラムを継承しており、それにいくつかの変更を加える必要があります。この一環として、テキストを含むモノクロ画像を作成し、それを画面に表示するだけでなく、画像の各行を一度に 1 つずつプリンターに送信する必要があります。

私はもともとビットマップを使用していましたが、DrawText() を使用してテスト文字列 (Hello World) を画面に表示することに成功しました (このコードは図 1 にあります)。しかし、ビットマップからラップデータを抽出しようとしている段階で壁にぶつかりました。私が取得しようとしているのは、黒または白を表す 1 または 0 の配列です。GetBitmapBits() を使用することを最初に考えていましたが、残念ながら、私が使用しているコードは非常に古いため、関数はまだサポートされていません。GetBitmap() を使用してから bmBits パラメータにアクセスすることで、この問題を回避できると考えました。ただし、これは常に null のように見えますが、これは次のリンクを見つけたときに確認されました.

私の次の試みは、リンクのアドバイスに従い、CreateCompatibleBitmap() の代わりに CreateDIBSection() を使用することでした。これは正しいパスのようで、必要なデータにアクセスできるはずですが、残念ながら DIB を表示できません (コードは図 2 にあります)。DIB のヘッダーの作成に何か問題があるのではないかと思いますが、何が間違っているのかわかりません。

ビットマップ内のデータにアクセスする方法について誰かが提案したり、DIB で何が間違っているかがわかったりする場合は、助けていただければ幸いです。

*** 図 1: ビットマップを作成して表示するコード

*** 図 2: ビットマップの代わりに DIB を使用しようとする

}

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

c++ - WinAPI を直接使用して、デバイスに依存しないビットマップを Windows クリップボードに入れるにはどうすればよいですか? (MFC やその他のラッパーはありません)

私はこれをしばらくの間機能させようとしてきましたが、理解できないようで、何時間ものグーグル検索ではまだ有用な結果が得られていません.

RGBA 順の 32 ビット ピクセルの配列があり、それらからデバイスに依存しないビットマップを作成し、SetClipboardData(CF_DIBV5, dib)または同様の方法でクリップボードに配置したい (理想的には、アルファ チャネルを保持したい)。カスタム クリップボード タイプを登録することはオプションではありません。クリップボードに配置するポイントは、別のプログラムに貼り付けられるようにするためです。ピクセル データを他の形式 (平面 BGRA など) に手動で変換する必要がない場合のボーナス ポイント。

私の現在のコードは次のようになります (すべて set_clipboard_img 関数内にあります):

最終的には、プロセスを元に戻す (クリップボードから潜在的に透明なビットマップを取得する) ことも必要になりますが、一度に 1 つずつ行う必要があります。