問題タブ [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 投票する
3 に答える
3889 参照

c++ - DIB 画像のサイズを変更し、良好な画像品質を維持するためのクイック コード

画像のサイズ変更には多くのアルゴリズムがあります- lancorz、bicubic、bilinear など。

私が必要としているのは、許容できる品質で画像のサイズを変更するための高速で比較的単純な C++ コードです。

これが私が現在行っていることの例です:

上記のコードは十分に高速ですが、画像を拡大すると品質が良くありません。

したがって、誰かがDIB をスケーリングするための高速で優れた C++ コード サンプルを既に持っているのではないでしょうか?

注:以前はStretchDIBitsを使用していました。10000x10000 の画像を 100x100 のサイズに縮小する必要があると、非常に遅くなりました。私のコードははるかに高速です。もう少し高品質にしたいだけです。

PS 私は独自の SetPixel/GetPixel 関数を使用して、データ配列を直接操作して高速に処理しています。これはデバイス コンテキストではありません。

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

c - RGB イメージ配列を sws_scale から DIB (メモリ ビットマップ内) に変換する方法

ストリームからビデオ フレームをデコードしています。sws_scale は、デコードされた RGB 画像データ (PIX_FMT_RGB24) のバッファーを提供します。入力を DIB にする必要がある既存のフロントエンド アプリケーションがあります。このバッファをDIBに変換する方法を知る必要がありますか?

私が理解していることから、WindowsのDIBはBGRであり、下から上にあり、ヘッダーが必要です。手動で行うのではなく、この問題がすでに解決されていることを願っています。また、sws_scale がネイティブにできるのではないかと考えています。

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

delphi - DIB を TPNGObject に変換する方法は?

私はDIBハンドルを持っています。TPNGObject透明度を維持したまま変換するにはどうすればよいですか?

編集: このソリューションでは方法2を使用します

Transparentしかし、フラグをtrueに設定しても、結果のビットマップは透明ではありません

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

delphi - PNG画像を適応させるためのDIBからTbitmapへのコード操作?

このコードを使用して DIB を TBitmap に変換しますが、このコードを PNG 画像に適したものにするにはどうすればよいでしょうか (透過性を維持します)。Transparent プロパティを true に設定するのに疲れましたが、コードは 256 色のビットマップ用に作成されたようです。

コードソース:こちら

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

windows - WindowsビットマップとDIBSectionの違いは何ですか?

次のファイルからDIBSectionをロードしています。

経験的に、ロードされたビットマップと過去に使用したビットマップの間に次の違いがあることを発見しましたが、違いがあるはずだと述べているドキュメントは見つかりません。

  • 行は、メモリ内で下から上ではなく上から下に並べられます。.bmpファイル自体がボトムアップで順序付けられていることを確認しました。
  • 行のパディングは、4バイトではなく2バイトの倍数になります。

CreateDIBSectionまた、DIBSectionを最初から作成するために使用すると、文書化された違いを発見しました。

  • によって返されるDIBSECTION.dsHandleおよびBITMAP.bmBitsの値はGetObjectNULLになります。

最初の2つの違いのドキュメントはどこにありますか?何か足りないものはありますか?これはWindows7の場合ですが、他のバージョンのWindowsでは異なるとは思えません。

編集:いくつかの追加の詳細。temp.bmpこれが;の16進ダンプです。これは7x7の画像で、右側に白いストライプがあり、左側に沿って青い値が増加しています(0x10、0x20など)。一番下の行(00,00,70)が最初であり、3バイトのパディングがあることがわかります。

.bmpファイルを読み取って内容を書き出すサンプルプログラムを次に示します。簡潔にするためのエラーチェックを削除しました。

上記のプログラムからの出力と、生成されたファイルの16進ダンプは次のとおりです。

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

pdf - C++を使用してPDFの画像データ(PDEImage)をDIBに変換しますか?

PDF 内のすべての画像を抽出し、それらを DIB 形式に変換しようとしています。最初の部分は簡単です。PDF のすべてのコンテンツを抽出し、それらを反復処理して、PDEImage を見つけるたびに、それらを配列に入れます。

しかし、私は2番目の部分をどのように進めるかについてはわかりません。すべての AVConversion メソッドを使用すると、画像だけでなく PDF のページ全体を他の形式に変換できるようです。

このタスクを達成する方法はありますか? 前もって感謝します!

編集:問題をさらに詳しく説明します。

Visual C++ と .NET Framework 4 を使用して Adob​​e Acrobat プラグインを作成しています。

プラグインの目的は、(とりわけ) PDF ファイルから画像データを抽出し、それらのデータを DIB に変換することです。DIS に変換する必要があるのは、それらの DIB を別のライブラリに渡して、画像の修正作業を行うためです。

今私の問題は、PDFの画像データをDIBに変換することです。PDF 上の画像データは、明らかに画像のすべてのカラー データを含む PDEImage (参照リンク) と呼ばれる形式で見つかります。ここで、次のコードを使用して、画像から上記の画像データ ビットを抽出し、CreateCompatibleBitmap() および SetBitmapBits() で使用して HBITMAP ハンドルを取得しています。次に、それを他の必要なパラメーターと共に GetDIBits() に渡し、MSDN に記載されているバイト配列の形式で DIB を取得します。

ここに私の質問/懸念があります。

  1. CreateCompatibleDC()、CreateCompatibleBitmap()、および SetBitmapBits() 関数を使用している方法は正しいですか? 私の考えでは、CreateCompatibleDC() を使用して現在の DC を取得し、次に CreateCompatibleBitmap() を使用して DDB を作成し、次に SetBitmapBits() を使用して実際のデータを DDB に設定します。あれは正しいですか?

  2. BITMAPINFO 構造体の作成方法に問題はありますか。私は、最終的に取得する DIB の形式に関するすべての詳細を含める必要があると想定しています。

  3. GetDIBits() を呼び出したときに、ビットマップ データを DIB としてバフに取得できないのはなぜですか?

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

c - Windows DIBとは何ですか?

フォーラムでGDIとDirectXに代わるWindowsグラフィックライブラリがあるかどうかについて話し合っていました。誰かがWinDIBについて言及しました。悲しいことに、彼はそれについてもっと説明しませんでした。

今、私はグーグルを検索しました。

  • WindowsDIBに関するウィキペディアの記事はないようです。

  • SDLなどの一部のグラフィックライブラリはWinDIBバックエンドを使用しているようです。

では、 WinDIBとは正確には何ですか?それにドキュメントはありますか?どこでそれについてもっと知ることができますか?

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

c# - C#ビットマップをRIOT用のWindows dibハンドルに変換しますか?

バッチ画像最適化にRIOT(ラジカル画像最適化ツール)を使用するアプリケーションを実装しようとしています。riot.dllをアプリに正常にインポートできます。しかし、Windows DIB(Device Independent Bitmap)ハンドルをRIOT関数に渡す方法がわかりません。

これが私のコードです:

RIOT_Show()期待どおりに機能しRIOT_Load_From_File()ていますが、電話をかけようとすると、次のRIOT_SaveToFile()エラーが発生します。

System.AccessViolationExceptionが処理されませんでした-保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。

だから私の質問は:

  1. System.BitmapオブジェクトをWindowsDIBハンドルに変換するにはどうすればよいですか?
  2. 変換できない場合、C ++ライブラリ(ある場合)を使用してジョブを実行し、DIBハンドルを返すことは可能ですか?

編集:

コードをこれに変更しましたが、同じエラーが発生します。

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

c++ - ウィンドウに表示するために、デバイスに依存しないビットマップ (DIB) を直角に回転させる最も効率的な方法は何ですか?

接続された Web カメラからビットマップを取得し、時計回りに 90、180、または 270 度回転させてウィンドウに表示するコードを書いています。

ビットマップは、もともとデバイスに依存しないビットマップとして提供されています。ソース (ビットマップ) から宛先 (画面上で回転) に移動できる最も効率的な一連の呼び出し (メモリのコピーに関して) は何ですか?

C++ と Win32 API を使用しています。

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

c++ - ピクセルの配列を HBITMAP に変換する方法

ウィンドウに表示するために HBITMAP に変換する必要があるピクセルの配列があります。CreateDIBitmap() を使用しようとしましたが、BMP ヘッダーがありません。MSDN のドキュメントに従って手動で作成しようとしましたが、うまくいきませんでした。

ここで私のコードがどのように見えるか

これで NULL 以外の hBitmap を取得できますが、これは常にピクセルの配列を指していないかのように黒い画像を表示します。コードを使用して確認しました

実際、qB.bmBits は NULL です。何が問題で、どのように修正するのですか?