問題タブ [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.
python - Pygame エラー: DIB セクションを作成できませんでした
Web サイト ( http://pygame.org/download.shtml )のダウンロード ページから pygame (python モジュール) をダウンロードしました。「pygame-1.9.1.win32-py2.7.msi」というパッケージを選択しました。 . プログラムを実行しようとすると、次のエラーが発生しました。
これが何を意味するのかわかりません。誰かが私を助けてくれますか?
64 ビットの Windows 7 hp ラップトップを使用しています。問題のプログラムは、「ラングトンのアリ」を視覚化する試みであり、次のようになります。
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
常にゼロであり、当然、ウィンドウには何も表示されません。コードの何が問題になっていますか?
c++ - C++: Hbitmap/BITMAP を .bmp ファイルに
わかりました、全体の話は、私は C++ で Leptonica+Tesseract OCR を使用してスクリーンショットを撮り、それを *.bmp ファイルに保存してから、それを OCR にロードしようとしています。これを頻繁に行う必要はありませんが、スクリーンショット データを直接 Leptonica PIX 構造にコピーできないように見えるため、最初にファイルに保存する必要があります..実際には、これに対する解決策が望ましいでしょう.
これは私がオンラインで見つけたコードで、私を助けようとしています。
スクリーン キャップ:
関数を書き込もうとする:
何年にもわたって人々の投稿から恥知らずにコピーされました。Ok!私が直面している問題は、LPBITMAPINFOHEADER で変換または使用できるグローバルにアクセス可能なハンドルに Hbitmap を GlobalAlloc する方法を理解できないようです。lpbi が作成されるとすぐに、Visual Studio 2012 のデバッグで、その中のすべてのフィールドが「メモリを読み取れません」というエラーになります。作成されているにもかかわらず、アクセスできません。
解決策.. メモリ内のスクリーン キャプチャから PIX に直接移動.. ビットマップに保存し、定期的に作成して読み取る方法を見つける.. より理にかなった完全に別の方法を見つける..
最初の方がいいのですが、これで解決策を求めています.2番目または3番目..
さらに情報が必要な場合は、提供を試みることができます。これはほとんどの場合、「このようなコードをこれまでやったことがなく、クラスで教えられていなかったので、勉強しながら学ぼうとしている」ということになります。
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 を使用しようとする
}
c++ - WinAPI を直接使用して、デバイスに依存しないビットマップを Windows クリップボードに入れるにはどうすればよいですか? (MFC やその他のラッパーはありません)
私はこれをしばらくの間機能させようとしてきましたが、理解できないようで、何時間ものグーグル検索ではまだ有用な結果が得られていません.
RGBA 順の 32 ビット ピクセルの配列があり、それらからデバイスに依存しないビットマップを作成し、SetClipboardData(CF_DIBV5, dib)
または同様の方法でクリップボードに配置したい (理想的には、アルファ チャネルを保持したい)。カスタム クリップボード タイプを登録することはオプションではありません。クリップボードに配置するポイントは、別のプログラムに貼り付けられるようにするためです。ピクセル データを他の形式 (平面 BGRA など) に手動で変換する必要がない場合のボーナス ポイント。
私の現在のコードは次のようになります (すべて set_clipboard_img 関数内にあります):
最終的には、プロセスを元に戻す (クリップボードから潜在的に透明なビットマップを取得する) ことも必要になりますが、一度に 1 つずつ行う必要があります。