問題タブ [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.
delphi - DelphiでスケーリングされたTBitmapをスムーズにすることは可能ですか?
256x256ビットマップのTImageでStretched=Trueを使用しています。これは、1、2、4、または8だけ縮小されます。予想どおり、「1」から離れるほど、ビットマップ上のテキストはひどくなります。ただし、Windows 7エクスプローラーは、縮小されたバージョンのビットマップを「よりソフト」でより快適にレンダリングすることに気付きました。この方法でTBitmapを「ぼかす」ことは可能ですか?
delphi - TBitmap.ScanLine[] の実行に時間がかかりすぎる
私はデルフィで働いています。私はbmp.ScanLine[]
自分のコードで使用しています。私のコードは次のとおりです。
ここで、imgMain は TBitmap 型です。私の問題は、このコードを実行すると、行に時間がかかりすぎることです
どこが間違っているのか教えてください。
delphi - ビットマップに描画する場合の Delphi 2007 と 2010 の違い
次のコードは、Delphi 2007 で期待どおりに動作します。イメージ リストからビットマップを取得し、その上に赤い X を描画し、新しいビットマップを同じイメージ リストの最後に追加します。
Delphi 2010 では、同じコードを使用すると、赤い X が透明な X になります。Delphi 2010 で期待どおりに動作させるには、何を追加/変更する必要がありますか? ありがとう
delphi - PNG画像を適応させるためのDIBからTbitmapへのコード操作?
このコードを使用して DIB を TBitmap に変換しますが、このコードを PNG 画像に適したものにするにはどうすればよいでしょうか (透過性を維持します)。Transparent プロパティを true に設定するのに疲れましたが、コードは 256 色のビットマップ用に作成されたようです。
コードソース:こちら
delphi - メモリ使用量が効率的な Delphi 6 用の使いやすい JPEG からビットマップへのコンバーター?
Delphi 6 用の使いやすい JPEG コンバーター(ソース コード)はありますか TBitmap と組み合わせてデフォルトの JPEG ユニットを回避しようとしています。これは、変換ごとに新しいビットマップを割り当て、各操作に他の初期化/破棄操作も含まれるためです。
RTP サーバーから JPEG フレームを受け取ります。これをビットマップに変換し、DirectShow フィルターの FillBuffer() 呼び出しを介してプッシュする必要があります。各フレームは、プリセット設定を使用してビデオ キャプチャ デバイスからストリーミングされるため、まったく同じサイズと形式になります。したがって、ビットマップを 1 回だけ割り当てて、各受信 JPEG フレームを既存のビットマップ メモリ領域に変換できれば、メモリのチャンクを 1 秒間に 25 回再割り当てすることと、Delphi が関与するその他の補助データ オブジェクトのオーバーヘッドを回避できます。 TBitmap とともに JPEG ユニットで使用される変換プロセスで。
CPU 使用率の観点からは、超高速である必要はありません。640 x 480 の JPEG フレーム変換を 1/25 秒未満 (安全のために 1/15) で処理するのに十分な速さです。
delphi - FMX.TBitmapにロードされたPNG画像にアルファチャンネルがあるかどうかを確認するにはどうすればよいですか?
FMX.Type.TBitmap
Delphi-XE2 Update3FireMonkeyHDアプリケーションにPNG画像をロードしています。ロードされたPNG画像にアルファチャンネルがあるかどうかを確認するにはどうすればよいですか?
現在、アルファチャネルを使用して画像をロードすると、Bitmap.Scanline[Y]^[X]
$AABBGGRRの形式でアルファ情報が含まれます。ただし、アルファなしのPNG画像をロードすると、明確なアルファ付きの画像と同じように、上記のレコードには$ 00BBGGRRエントリ(AA = 0)しかありません。したがって、問題-アルファが完全に透明なRGBA画像であるか、RGB画像であるかを判断する方法(この場合、アルファを完全に不透明にするために処理します)。注:すべてのピクセルをチェックすることはオプションではありません。
FMX TBitmapにはPixelFormat
プロパティがなく、HasAlpha
フラグも見つかりませんでした。
delphi - TChart をビットマップにエクスポートするにはどうすればよいですか?
私は Steema Software と Delphi 6 の TeeChart Pro v7.06 を使用しています。私のプロジェクトには、TChart (BottomAxis.Automatic = False) と TChartScrollBar (スクロールする) があります。TChart には、TChart の幅に収まらないシリーズがいくつかあるため、TChartScrollBar を使用します。
グラフを TBitmap にエクスポートする必要があります。そして、私が知っている TChart のすべてのメソッドは、TChart の可視部分のみをエクスポートするため、その方法がわかりません!
表示部分だけでなく、TChart 全体をエクスポートする方法はありますか?
ありがとう!
delphi - TBitmap への変更が、Delphi 6 DirectShow フィルタのレンダリング イメージに表示されず、多数のソフト ページ フォールトが生成される
DSPACK コンポーネント ライブラリで記述された Delphi6 DirectShow フィルタ (プッシュ ソース ビデオ フィルタ) があります。FillBuffer() 呼び出しで、変更されたビットマップを宛先メディア サンプルに出力する前に、ビットマップを変更するいくつかの単純なコードで、本当に厄介な問題が発生しています。コードを以下に示します。
ご覧のとおり、Byte ポインターを使用して 24 ビット ビットマップの RGB 値をトラバースする 2 つの単純なループです。このコードは、DirectShow 以外のテスト アプリケーションでは問題なく動作しました。ただし、私の DirectShow フィルターでは、使用されている値に関係なく、レンダリングされたビットマップに変化が見られません。単純にすべてのバイトを 0 に設定したテスト行も確認できます。画像はまだ変更されていません。ファントムまたは破損したビットマップ オブジェクトがないことを確認するために、ビットマップに簡単な文を出力する行を追加しました。文は、レンダリングされたビットマップに表示されます。
さらにややこしいのは、このコードを実行すると、タスク マネージャーから報告されるように、毎秒数千のソフトページ フォールトが発生することです。このコードを無効にすると、ソフトページ フォールトがなくなります。コードがこれを行う原因は何ですか? ループをトレースしたところ、各行の後に Byte 値が変化することが実際に確認されましたが、画像は影響を受けません。
最後に、Scanline を使用せずにピクセル アクセスを行う高速な方法を誰かが知っている場合は、教えてください。TBitmap.Scanline をトレースすると、FreeImage が呼び出されます。可能であれば、メモリ割り当てを最小限に抑えたいと思います。GR32.TBitmap32 を使用できません。Synopse の高速 jpeg デコーダーを使用しており、TBitmap32 オブジェクトでは機能しないためです。
UPDATE : 問題は、ScanLine プロパティにアクセスする前に、ビットマップのPixelFormatプロパティを pf24Bit に設定していなかったことです。詳細については、このスレッドを参照してください:ピクセル変更コードはメイン アプリですばやく実行されますが、Delphi 6 DirectShow フィルターでは他の問題で非常に遅くなります
delphi - Delphi - ビットマップを「その場で」トリミングするにはどうすればよいですか?
TBitmap があり、このビットマップからトリミングされた画像を取得したい場合、「その場で」トリミング操作を実行できますか? たとえば、800x600 のビットマップがある場合、中心に 600x400 の画像が含まれるように縮小 (クロップ) するにはどうすればよいでしょうか。つまり、結果の TBitmap は 600x400 になり、(100, 100) と ( 700, 500) 元の画像で?
別のビットマップを経由する必要がありますか、それとも元のビットマップ内でこの操作を実行できますか?
delphi - 32ビットTBitmapの特定の色のアルファ値をどのように変更しますか?
ピクセルに32ビットのTBitmapの特定の色が含まれている場合、アルファコンポーネントの値を変更する必要があります。ビットマップデータにアクセスするためのScanLineプロパティについては知っていますが、それぞれのアルファコンポーネントを変更する方法がわかりません。ピクセル。