問題タブ [tbitmap]

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 に答える
1185 参照

delphi - TBitmaps を AVI ファイルに書き込もうとすると、黒いフレーム (すべてゼロのデータ) しか得られない

ファイルから JPEG フレームを読み取り、それらを AVI ファイルに書き込む Delphi アプリケーションがあります。各 JPEG フレームは TBitmap オブジェクトにデコードされ、Delphi 6 VFW.PAS ユニットを介して、AVI 操作用の Windows API DLL (AVIFIL32.DLL) によって提供されるサービスを使用して、出力 AVI ファイルに書き込まれます。

問題は、出力ファイルにすべての黒いフレームが表示されることです。AVIStreamWrite() を呼び出す前にソースとして使用している TBitmaps には有効なデータがあることがわかっています。これは、TBitmap.SaveToFile() メソッドを使用してそれらをディスクに書き込んでおり、ソース イメージが正常に見えるためです。しかし、私はまだ黒いフレームになってしまいます。TBitmap からビットを取得する方法に何か問題があります。これは、GetDIBBits() によって返されたポインタが指しているメモリ領域を調べると、すべてゼロを示すためです。

以下は私のコードです。私は何を間違っていますか?また、CreateDIBSection() によって返された最初の pBits を解放しようとすると、アクセス違反が発生します。それは正常ですか、それともそれを解放する適切な方法はありますか?

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

python - Delphi TBitmap コードから Python PIL へ

一部の Delphi コードを Python PIL に変換しようとしています。問題は二股です。まず、私は Delphi プログラマーではありません。第二に、私は今日まで PIL を使用したことがないので、いずれかの領域で問題が発生する可能性があります。

したがって、 PixelFormat 属性が各ピクセルのサイズをバイト単位で示していることがわかります。また、ScanLine メソッドは、線を表すピクセルの配列を取得することになっていることもわかりました。私が得られないのは、各ピクセルを RGB 値として視覚化する傾向があるということです。色の値の最下位ビットを抽出することに慣れています。ただし、既存のコードが何を抽出しているのかさえわからないと思います。同じ画像内の各ピクセルの RGB 値を抽出する Python PIL コードがいくつかありますが、RGB 値のタプルが以前のコードで取得した PB 変数とどのように比較されるかわかりません。いくつかの実験に基づいて、私はそれがまったく比較できないと推測しています.

前もって感謝します。

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

delphi - TBitmap から TPngImage への変換とメモリ使用量

11 個の白い TBitmap (32 ビット 512x512 ピクセル = 1 MB) の配列があり、それらを TPngImage 配列に割り当ててメモリ使用量を減らしたいと考えています。タスク マネージャーで監視したところ、わずか 0.824 MB の違いでした。なぜでしょうか? また、メモリ内の TBitmaps を可逆圧縮するための最良の/高速な方法は何ですか?

p>


アップデート

Form @bummi research 私が行う最善の方法は、png をメモリ ストリーム配列に保存することだと思います。これにより、9.7 MB の差が生じます。

p>

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

ios - ImageControl内のDelphi iosスケールビットマップ

75*75 の .png ファイルがありますが、背景が透明な 150x150 サイズの ImageControl で表示したいと考えています。私は現在このコードを使用しています:

次の質問があります。

1) 透明性を維持するにはどうすればよいですか? (.png の透過領域は白に変換されます。) 2) 幅/高さの設定を避けるために、ImageControl の外側でスケーリングを行う必要がありますか?

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

delphi - TImage にアルファ チャネルを持つ TBitmap を正しく表示するにはどうすればよいですか?

アルファチャンネル付きの半透明の画像を含む TBitmap があります (この例では TPngImage から取得しました)。

この TBitmap をTestIn.bmpファイルに保存し、任意の画像ビューアで開くと、透明度が表示されます。しかし、それを TImage に割り当てると、透明なピクセルが黒く表示されます (TImage にはTransparent = True.

TImageで透明度のあるTBitmapを正しく表示するにはどうすればよいですか?

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

delphi - BMP 背景を削除し、Delphi で透明な PNG に変換します

私は TBitmap を持っています。TBitmap 内には「マップ イメージ」(マップのイメージ) がロードされています。このマップ イメージには、白い背景と多数の黒い線があります (アンチエイリアス処理は、白い背景と黒い線の 2 色のみです)。

今、私はこれをしなければなりません:

  • TBitmap から白い背景を削除します (透明な背景と黒い線)。
  • 可能であれば、可能な場合に限り、黒い線の色を別の色に置き換えます。
  • 結果を透明な PNG 画像として保存します。

これらが可能かどうかはわかりません。提案?

注 可能であれば、クラスまたは VCL の 3 番目の部分を使用することは避けたいと思います。プロジェクトで使用するだけなので、必要に応じて FreeImage ライブラリを使用できます。Delphi XE3 を使用しています。

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

c++builder - 新しいビットマップ形式を TBitmapCodecManager に追加する方法

PPM ファイルを読み書きするためのクラスを作成しました (質問しないでください。この形式を選択したわけではありません)。TBitmapローディング/セーブシステムの一部にしたいです。

このサポートを追加する方法を知っている人はいますか? 本当に完全なコーデックを作成/インストールする必要がありますか?

解決:

Remy Lebeau の投稿により、コーデックを作成して登録することができました。ただし、必要なすべての機能が文書化されていないため、機能させるには試行錯誤が必要でした。

新しいコーデックを登録するには、このような静的メンバーを使用する必要がありRegisterBitmapCodecClassますTBitmapCodecManager

コーデックには、次の関数を定義する必要があります。

このクラスFmx::Surfaces::TBitmapSurfaceにはドキュメントの痕跡はありませんが、IDE は利用可能な機能を提供してくれました。Pixels[x][y]ピクセルの読み取り/書き込みに配列が使用されていると考えました。

クラスが登録された後、通常どおり新しい画像タイプを読み取ることができますTBitmap->LoadFromFile("");

楽しみ!

PS。これを閉じることに投票した人は、理由をコメントしてください。どのような間違いを犯したのか分からない場合、どうすれば改善できますか?

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

delphi - Delphi の Graphics.TBitmap の PixelFormat のデフォルト値

DelphiのTBitmapのPixelFormatのデフォルト値は何ですか? TBitmap を作成するたびに、PixelFormat を指定する必要がありますか?

例えば、

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

android - Delphi XE7 Firemonkey - TBitmap フォーム ファイルを作成すると EJNIException java.lang.OutOfMemoryError がスローされる

コミュニティ、

私の問題は次のとおりです。

TBitmaps を使用したい Kindle Fire 用の XE7 FMX アプリケーションを作成しました。問題は、デバイスのストレージから TBitmap を作成できないことです。アプリケーションを自分のコンピューターで Win32 アプリとして実行するとすべて動作しますが、Android アプリとして実行すると、タイトルから例外がスローされます。

これが私のコードです:

このコードは意味がありませんが、これは単なるテスト プログラムです。これが機能する場合、メイン プログラムで使用できますが、この時点で既に失敗しています。(そして、彼が VCL ではなく FMX.Graphics.TBitmap を使用していることを既に確認しています)

これが私のスタックです:

エラーはどこにありますか? それは私のせいですか、それともデルフィに何か問題がありましたか?