問題タブ [porter-duff]

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

android - PorterDuff.Mode と同等のエッジ フェージング

のエッジ フェードをプログラムでレンダリングしたいと考えていますTextView。どのモードで真のアルファ グラデーションを作成できますか?

実際のエッジ フェードは、透明度を から までスムーズに減らし (オーバーレイ グラディエント ハックなし) 1.00.0トップ ビューが背景ビューにフェードインするようにします。

すべての組み合わせを試しましたが、どれも機能しませんでしたか? そうすることは不可能ですか?

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

qt - Qt で半透明の色をペイントするときに色の量子化を避ける

Qt 5.2 を使用してアルファを含む画像を作成したいのですが、色の値が量子化されていることがわかりました。次に例を示します。

これは出力します:

私のアプリケーションでは、元の赤、緑、青の値を維持することが重要です。私が見逃した Qt オプションはありますか、それとも Qt 2D レンダラーの予想される動作ですか?

0 投票する
0 に答える
229 参照

android - 3D画像マスキングアンドロイド

私は3D画像マスキングに関するアプリケーションを開発しています。このために、さまざまな透明画像があり、それらを配列に配置しています。多くの検索を行い、最終的にPorterDuffXfermodeを使用してマスキングを実現しました。しかし、一度にマスクされた画像を1つしか取得できません.以下のコードを見てください

下の画像のような私の希望の出力。よろしくお願いします

ここに画像の説明を入力

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

android - ビットマップを横線でめちゃくちゃに書く

透明なビットマップに指で描画しようとしています。私が使用しているキャンバスは画像をうまく描画しますが、画像を保存すると、画像は次のように表示され、水平方向の透明な線がすべて表示されます。

保存された画像

次のコードを使用して描画します。

ファイルは次を使用して保存されます

標準のファイル保存を使用して保存します

この問題を解決する方法はありますか? 同時に、ビットマップを pdf に埋め込んでいますが、色が本来よりも暗くなります。

これは、保存する前の画面上のイメージです。背景は関係ありません。画面にうまく描画できますが、pngに保存するとめちゃくちゃに見えます。

ここに画像の説明を入力

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

android - 1 つのパス上に重なり合う領域を描画する

交差するがあり、Path2 回以上交差する領域の色を変更したいと考えています。以下のように:

望ましい行動

ということで、塗料をセット。

しかし、私が電話するcanvas.drawPath(mPath1, highlighterPaint)canvas.drawPath(mPath2, highlighterPaint)、下の画像が表示されます。この図には、エンドポイントにラベルが付けられた 2 つのパスがあります。

実際の行動

に各パスを描画していCanvasます。

セパレートPathは共有領域を正しく暗くしますが、シングルPathはそうではありません。最初の画像と同様の効果を得るにはどうすればよいですか?

0 投票する
0 に答える
591 参照

java - PorterDuff モードの実装 - アルファの扱い方

Android でビットマップ ブレンディングを使用する必要がある状況にあります。iOS版のアプリと同じようにします。

iOS の連中は PorterDuff モードを使用していましたが、これは現在 Android のPorterDuff クラスには標準で存在しません。

まさにソフトライトモードが必要ですが、それを忘れてください-Androidに欠けているいくつかのモードの全体像に対処することにしました。

調査中に見つけたリンクは次のとおりです。

それらのすべてに目的の式が含まれているため、メソッドを記述して、必要なすべてのブレンド モードを実装するのは非常に簡単に思えます。

しかし、そこからトラブルが始まります。

上記のリンクの式は色成分のみを扱い、アルファは当然のことであるかのように脇に置きます。しかし、そうではありません。

これまでのところ、私はこのSO questionのコードを手に入れました。ソフトライト式を実装するメソッドを書き直そうと考えてoverlay_byte(int sc, int dc, int sa, int da)いますが、どうすればいいのかsada変数がわかりません。

PS: ブレンド モードの裸の Java 実装のパフォーマンスが、ネイティブ android の PorterDuff クラスのパフォーマンスとはかけ離れていることは承知していますが、それは後で対処できます...

後で追加:

昨日以来、私はいくつかのより深い調査を行い、Java でソフトライト ブレンディング モードを実装する方法を見つけました。ソースは次のとおりです (PorterDuff.Mode.LIGHTEN などのすぐに使用できるモードを使用するときに、Android 内で機能するものと同じです)。

私はsoftlight_byteそこからメソッドを取り、彼が使用するすべてのものをJavaに翻訳しました(ここでできる限りのことをしました)。結果は機能しますが、画像が正しくありません。下の部分は問題ないように見えますが、上の部分は焼き直されます。Javaに書き直した私のコードは次のとおりです。

誰かが間違いの可能性をチェックできますか?これは私にとって非常に重要です!

PS:applyBlendMode上記のSOの質問とsoftlight_byte(rD, rS, aS, aD);認識から取られました-C ++から書き直されました。

0 投票する
0 に答える
451 参照

android - drawBitmap をキャンバスに透明なビットマップで、元のピクセルを置き換えます

私のアプリでは、ユーザーが画像を編集できます。画像は「スライス」で編集されます: ユーザーは編集する大きな画像の一部を選択し (1)、ユーザーはそれを編集し (2、3)、ユーザーが終了すると、編集されたスライスが元の画像の上にコピーされます。画像 (4)。次の図で、簡略化された手順を確認できます。

サンプルワークフロー

  • スライスを編集するには、トリミングされた領域のビットマップを作成します。これは、ユーザーが編集する領域です (2,3)。

  • ユーザーが終了したらdrawBitmap()、元の画像にスライスします (4)。元の画像には反転する必要がある変換行列などがあるため、プロセスはより複雑になりますが、簡単にするためにはこれで十分です。

この問題は、ユーザーがスライス内のいくつかのピクセルをクリアしたときに発生します (3)。適切なモードが見つからないPorterDuff / Paintため、編集されたスライスが元の画像の部分を、透明なピクセルでも置き換えます。私が望むのは、(4)に示されている結果を得ることです

これまでの私の最善の策は を使用するPorterDuff.SRCことですが、下の画像でわかるように、元の画像では透明なピクセルが黒に変わります。ペイントの色を透明に設定すると、結果全体が黒になります。

私も試しSRC_OVERてみmImageCanvas.drawARGB (0xff,0,0,0),ましたが、運がありませんでした。最初のケースでは、透明なピクセルは単に無視されます。2 番目の例では、透明なピクセルが黒く塗られています。

サンプル結果