背景としてのみ表示される不可視のPNG画像レイヤー


48

私は最近、奇妙な性質を持つ非常に奇妙なイメージに出会いました。画像はPNG形式で、背景が透明な単純な鳥を示しています。私の友人は、画像を保存して私の背景として設定するために、簡単な指示で画像を送ってきました。

カモメだけの元の画像

画像を背景として設定すると、2番目の画像が表示され、実際には武器の上にカモメが立っていることが示されます。

秘密レイヤーを含む背景画像?

これは最初、画像の性質とそのような画像を作成する方法に非常に興味を持ちました。Photoshopで画像を開いたところ、普通の画像は何も表示されません。画像は透明なカモメと同じで、非表示にするレイヤーやマスクはありません。Photoshopで画像を確認した後、Windowsをデスクトップの背景として設定するときにWindowsがファイルに変更を加えたと思っていました- %AppData%\Microsoft\Windows\Themes画像への移動が同じように見えた後。

Photoshopで表示または編集している場合と比較して、Windowsデスクトップの背景として設定した場合、この画像に個別の非表示レイヤーまたは完全に個別の画像が表示されるのはなぜですか?


6
XnViewで開き、[アルファチャネルの削除]をクリックすると、完全な画像が表示されます。JPEGへの変換Windows 7の背景、透明度負けanswers.microsoft.com/en-us/windows/forum/windows_7-desktop/...
leonbloy

回答:


59

Smashing Magazineのこの記事で「ダーティトランスペアレンシー」と呼ばれていたものだと思います。

基本的に、透明なPNGのすべての色はRGBA値で記述できます。RGBは赤、緑、青のチャンネルを表し、Aはアルファを表します。「非表示」色には、RGB値+ 0アルファを設定できます。つまり、色は元の情報を保持しますが、アルファが0に設定されているため透明としてレンダリングされます。

Alphaを使用しているときに、なぜRGB値を保存したいのですか?そのため、透明な背景GIFのギザギザのエッジとは異なり、滑らかなエッジと透明な色を得ることができます。PNGの透明度は0〜255の範囲で指定でき、GIFでは100%透明または不透明です。50%の透明度で何かをレンダリングするには、RGB値を知る必要があるため、値は保存されます。ほとんどの画像編集ソフトウェアは、Photoshopを含む完全に透明な色を保存するときに、そのRGB情報を破棄します。

CCバージョンについて話すことはできませんが、Photoshopの古いバージョンで「見えない」色を見るにはプラグインが必要です。1つを選択:PhotofreebiesまたはSuperPNG。SuperPNGは最近のもので、混乱が少ないようです。

なぜトリックが機能するのですか?壁紙は不透明である必要があります。それは、背後に何も表示されないためです。私の推測では、WindowsはAlphaチャンネル情報を破棄し、その過程で隠されたRGB値を明らかにします。


6
透明レイヤーマスク(アルファチャンネル)を削除して、あなたが言ったことを試しました。これは背景を作成する非常にクールな方法です。すぐにトローリング機能を調査する予定です
。D– Callum

15
これはWindowsのバグだと思います。ピクセルのアルファ値が0の場合、ピクセルは透明であり、RGB値は重要ではありません。Windowsは、白い背景など、他のものの上に透明度を含む画像をレンダリングする必要があります。
ポール

5
@ポール。同意しますが、デスクトップ用に定義された背景色である場合を除き、画像が引き伸ばされたりタイル化されず、デスクトップを埋めるには小さすぎる場合に使用されるのと同じ色です。比phorは、壁紙が無地の表面または壁の上にあることです。
trlkly

3
Adobe Photoshopがこれを達成するためのプラグインを必要としていた場合、私は非常に驚きます-GIMPに似たコントロールを提供することを期待します。たとえば、カーブまたはレベルツールによるアルファ値の調整透明部分を表示します)。
マイケルシューマッハ

2
@MichaelSchumacher特定の分野でPhotoshopが不足していることに驚かれることでしょう。公平を期すために、現在のCCバージョンでサポートされているかどうかはわかりません。私は永久ライセンスのPSを使い続けることに決めたので、私のバージョンは今ではほとんど使われていません。
レイニーズ

13

Nihalの答えに追加するために、これはGIMPの「anti-erase」ブラシを使用して再現できます。消去ブラシは、画像がそれをサポートする形式を使用している場合、アルファチャネルを追加または削除できます(Altキーを押しながら消去と消去を切り替えます)。

Kritaの場合、次の操作を実行できます Layer > Split Alpha > Alpha into Mask。その後、作成したばかりの透明マスク1チャンネルを非表示または削除すると、画像全体が表示されます。

Windowsの背景には背後にあるものは何もないので、おそらく透明度を取り除いて、それなしで画像を表示しているだけです(見た目が速くて汚い32ビット画像から24ビット)。


3

明確化の1つのポイント:これはバグではなく、PNG仕様で指定された動作です。具体的には、仕様では、視聴者またはコンバーターが透明度を理解できない場合、または透明度がコンテキストに適切でない場合、またはアルファチャネルの使用が無視される場合があると記載されています。さらに、この仕様では、アルファチャネルが無視される場合に画像が役立つように、すべての画像ジェネレータで透明色を設定する必要があります。(言い換えると、仕様を読んでから数年経ちました。)


1
仕様から関連する文章を見つけてみてください。w3.org/TR/PNGでこれを見つけることができないためです。ありがとう!
MarnixKlooster ReinstateMonica
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.