問題タブ [alpha-transparency]

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 投票する
4 に答える
17951 参照

android - ARGB_8888 Android ビットマップの生データへのアクセス

copyPixelsToBufferおよびcopyPixelsFromBufferメソッドを使用して、Android で ARGB_8888 形式のビットマップの生データにアクセスしようとしています。ただし、これらの呼び出しを呼び出すと、常にアルファ チャネルが RGB チャネルに適用されるようです。byte[] または類似の生データが必要です (JNI を通過するため; はい、Android 2.2 の bitmap.h について知っていますが、それを使用することはできません)。

以下にサンプルを示します。

次にログが表示されます

argb チャネルの順序が異なることは理解しています。それはいいです。しかし、私はすべてのコピーにアルファチャンネルを適用したくありません(それはそれがしているようです)。

これはどのようcopyPixelsToBuffercopyPixelsFromBuffer動作するはずですか?バイト[]で生データを取得する方法はありますか?

以下の回答に応じて追加されました:

buffer.order(ByteOrder.nativeOrder());の前に置くとcopyPixelsToBuffer結果が変わりますが、それでも私が望む方法ではありません:

基本的に同じ問題に悩まされているようです (それぞれにアルファが適用されますcopyPixelsFrom/ToBuffer)。

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

html - HTML5 Canvas で使用するアルファ チャネル付きの h264 ビデオを作成するにはどうすればよいですか?

私はこのデモに興味を持っていました: http://jakearchibald.com/scratch/alphavid/

ここでもこの質問を見ました:

HTML5 ビデオ タグを使用して背景を透明にしたビデオを作成できますか?

しかし、私には理解できないようです: アルファ チャネルを使用して h264、ogg、および webm ビデオ ファイルを作成するにはどうすればよいですか?

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

php - アルファグラデーションを使用して画像を動的に生成するにはどうすればよいですか?

ぼかしたエッジを持つ楕円を動的に作成する方法を探しています(ぼかしの程度を制御できます)。理想的には、これは Javascript を介して実現されます。これは、オフラインで使用できるようにするアプリでの使用が意図されているためですが、簡単にするために、当面は PHP ソリューションに満足しています。

GD を使用して解決策を試みましたが、アルファを扱う場合はかなり制限されていることがわかりました。主な問題は、塗りつぶされた楕円を使用してレイヤー化すると透明効果が相殺され、次第に小さくなる楕円で境界線を描画すると、楕円が完全に整列しないという問題が発生することでした (下の画像を参照)。

例

複雑になりすぎずに、これらの問題を解消するために使用できるソリューションはありますか? ピクセルごとに画像を作成できることは承知していますが、比較的簡単な作業であるはずの非常に複雑な方法のように思えます。

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

c# - 歪みを発生させずに部分的に透明な画像を印刷する

8ビットのアルファチャネルを持つ画像やテキストを印刷するのに問題があります。
ほとんどのプリンタドライバは、さまざまなレイヤーをブレンドする代わりに、いくつかのディザリングパターンを追加して、アルファチャネルを誤ってレンダリングするようです。
たとえば、この質問の最後にあるコードは、次のようなものを生成します(左の四角のディザリングに注意してください)。仮想PDFプリンター-レーザープリンター
これまでのところ、XPS仮想プリンターのみが正常に機能します。

これを回避するために私がいつも行ってきたのは、中間ビットマップでの印刷ですが、1200DPIの標準の11x8.5''ページの場合、このビットマップを保存するためだけに約400 MBのRAMが必要になり、どちらがそのようなオブジェクトを印刷する正しい方法。
ありがとう

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

delphi - Delphi 2006:PNGをTImageに実行時に割り当てると、アルファ透明度が失われます

Delphi2006のTImageはPNGを完全にはサポートしていません。フォームにアルファ透明度の画像を表示するには、実行時に画像を読み込む必要があります。設計時にロードすることはできますが、PNGがDFMファイルに保存されていないため、存続しないと思います。最新のDelphiでは、これはすべて厄介なことだと確信していますが、現時点ではアップグレードできません。

とにかく、私は実行時にそれらをロードしていました:

PNGImageCollectionコンポーネントは、さまざまなサイズのすべてのPNGを保持し(これらは設計時に作成およびロードされます)、FormCreateイベントでそれぞれのTImageに割り当てます。

フォームで使用した後、これらの画像の1つを別の場所で再利用しようとして問題が発生するまで、これは問題なく機能しました。TPictureを割り当てる行為により、Assignの結果としてTPictureが空の画像に設定されていることがわかりました。これは、ルーチンTPicture.ForceTypeで発生していました。このルーチンは、AFAICTがFGraphicのタイプをチェックし、目的のタイプでない場合は、FGraphicを解放して、要求されたタイプの新しいインスタンスを作成します。

わかった。少しスクラッチした後、多分私は本当にこれを行うべきであることがわかります:

これは、Assignが画像を覆い隠さなかったという点でトリックを行いましたが、画像は半透明のビットで不透明として表示されます。

Image1.Picture.Bitmap.Assignで割り当てられた場合のTImage

それ以外の:

Image1.Picture.Assignで割り当てられた場合のTImage

この画像でアルファ透明ビットを正しく表示するにはどうすればよいですか?(および補足の質問:Image1.Picture.Bitmap.Assignはそれを行う正しい方法ですか?)

コードをもう少し詳しく説明します。

TImageの「再利用」に問題があったコードでは、シーケンスは次のとおり
でした。

(PNGIMageは会社のロゴであり、LogoImage1はメインフォームにあります)。

印刷レポートヘッダー:

ロゴを印刷するルーチンが最初に呼び出されると、エラーなしで実行されますが、PrintBitmapRectの呼び出し後、LogoImage.Pictureはクリアされたままになります。次に印刷ヘッダールーチンが呼び出されると、画像の幅と高さがゼロであるため、CalcGraphicHeightの呼び出しは失敗します。

Picture.AssignをPicture.Bitmap.Assignに変更すると、ヘッダー印刷ルーチンのRTEが修正されますが、同じ「修正」をPNGから割り当てられた他の静止画像(上記の歯車など)に移植すると、aplhaチャネルが失われました。

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

delphi - 半透明のTBitmapに不透明な線を描画します

空のビットマップがあり、TCanvasを受け取る描画ルーチンがあります。描画ルーチンはより大きなライブラリの一部であるため、事実上私の制御不能です。

簡単に言えば、描画ルーチンがピクセルに影響を与える場合は、ピクセルを不透明にします。触れられていない各ピクセルは透明のままにする必要があります。描画ルーチンで使用される色を制御できないため、このTransparentColorプロパティを使用する必要はありません。

これを達成する方法はありますか?キャンバスが描画先のピクセルのアルファレイヤーに影響を与えるように指定するために使用できるある種の設定はありますか?


更新:私はDelphi 2010を使用しています、そしてここに私が試したコードに従います:

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

c++ - 8 ビット ビットマップでアルファ チャネルを処理する良い方法は? - OpenGL - C++

3D メッシュをテクスチャリングするために OpenGL でビットマップを読み込んでいます。これらのビットマップの一部には、一部のピクセルのアルファ チャネル (透明度) があり、最適な方法を見つける必要があります。

  1. 各ピクセルの透明度の値を取得する

  1. 透明度を適用してレンダリングする

誰かがこれの良い例を持っていますか? OpenGL はこれをサポートしていますか?

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

c# - 透明な PNG を黒以外の背景色の JPG に変換する

System.Drawing.Image を .Net で使用して、png から jpeg への簡単な変換を行っています。私は基本的に次の 2 行のコードを使用しています。

アルファチャンネルのためにpngファイルに透明度が含まれている場合を除いて、正常に機能します。その場合、変換された jpeg の背景は黒になります。代わりに背景を白にする方法はありますか?

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

iphone - UIImageView の上部と下部のアルファ値を変更する

フォト アルバムから写真を選択していますが、次のことができるようにしたいと考えています。

  1. 上部と下部のアルファ値 (上部から 20 ピクセル、下部から 20 ピクセル) を 0.5 に変更します。

  2. 次に、途中の変更されていない部分のみをコピーして、別の UIImageView に割り当てます

私はこのコードを持っています:

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

flash - Photoshop から Flash への透過性を備えた PNG: .swf を .psd とまったく同じように表示する方法は?

Photoshop には 2 つのレイヤーがあります。1 つはテクスチャ、2 はテクスチャに重なる半透明の画像です。この 2 つの組み合わせは、Photoshop で見栄えがします。それらを Photoshop とは別にエクスポートし、透明度と色を sRGB に変換した 24 ビット PNG として保存します。(PS の作業色空間は sRGB です。)

それらをフラッシュにインポートした結果は、私を泣かせます (下の画像を参照してください。十字の周りの領域がどのように見えるかに注目してください)。:(

PNGを動的にロードすることと、それらをflaに直接インポートすることの両方を試みました(圧縮タイプ:ロスレス、スムージングを許可:false)。エクスポート時に半透明の領域が不正確に保存されているようです。さらに不可解なのは、動的読み込みと直接インポートで結果が異なる理由です。

私は何が欠けていますか?これらの症状の詳細な説明は高く評価されます。


EDIT1これが私が立ち往生しているpsdです。zip 内には、2 つのレイヤーしかないtransparent.psdがあります。それらをflaに配置することはまだうまくいきません.透明な領域は汚れます.

http://noregret.org/test/transparency.zip (400kb)


EDIT2仲間のフラッシュ開発者は、「事前に乗算されたアルファの問題」を指摘してくれました。

http://en.wikipedia.org/wiki/Alpha_compositing#Description

これは私が克服しようとしている問題に違いないと思います。

私の知る限り、Photoshop は内部的にストレート アルファ (PNG エクスポートで白を事前乗算) を使用し、 Flash は事前乗算されたアルファを使用します。しかし、私はまだそれを理解していません.透明な画像のレンダリングの違いは何ですか? そして、PS と Flash で同じように見えるようにするには、どの操作を実行する必要があるのか​​、まだ正確にはわかりません (少なくとも、画像の準備についてアーティストにどのように指示すればよいでしょうか)。

誰?私は答えを求めてGoogleを掘り続けています。


EDIT3残念ながら、画像を平らにすることはできません。この例は、全体像のほんの一部です。テクスチャの上に半透明の要素がたくさんあるかなり複雑なインターフェイスがあります。絵がかっこよく見えます(くしゃくしゃの段ボールか何かでできているような)。そのため、テクスチャと半透明のレイアウトは別々に必要です。フラッシュの最上位レイヤーにブレンドモードを追加すると、「ゴースト領域」の問題は解決されますが、画像が大幅に変更されるため、受け入れられません。


半透明レイヤー:

ここに画像の説明を入力

テクスチャ レイヤ:

ここに画像の説明を入力

結果 (Windows 上の PS および Flash Player のスクリーンショット):

  • Photoshop (オリジナル):わかりました
  • フラッシュ (fla にインポート): 重いゴースト領域
  • Flash(png読み込み):ライトゴーストエリア

ここに画像の説明を入力