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

adobe-photoshop graphics-editing png windows

最近、奇妙な特性を持つ非常に奇妙な画像に出くわしました。その画像はPNG形式で、透明な背景にシンプルな鳥が描かれています。私の友人はその画像を保存して、私の背景に設定するだけの簡単な手順で送ってくれました

Original image with just the seagull

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

Background image with a secret layer?

これは、画像の性質とそのような画像をどのように作るのか、最初は非常に興味をそそられました。Photoshopで画像を開いてみましたが、何の変哲もありません – 画像は透明なカモメと同じで、見えないようにするための隠しレイヤーやマスクもありません。Photoshopで画像を確認した後、デスクトップの背景に設定する際にWindowsがファイルを変更したのかと思っていましたが、%AppData%\Microsoft\Windows\Themesに移動すると、画像は同じように見えました

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

  49  Callum  2017-06-29


ベストアンサー

このスマッシングマガジンの記事で「汚い透明性」と呼ばれていたものではないかと推測しています

透過 PNG の基本的にどんな色でも RGBA 値で表現することができます。見えない」色は任意の RGB 値 + 0 アルファを持つことができます。つまり、その色は元の情報を保持しますが、アルファが 0 に設定されているために透明になります

アルファが使われているのに、なぜRGB値を保存したいのでしょうか?透過背景GIFのギザギザしたエッジとは違い、滑らかなエッジと透過色を得ることができるからです。PNG の透明度は 0 から 255 までありますが、GIF では 100% 透明か不透明です。例えば透明度を 50% にするためには、RGB 値を知る必要があり、その値が保存されます。ほとんどの画像編集ソフトは、完全に透明な色を保存する際に、そのRGB情報を破棄します(Photoshopを含む)

私はCCのバージョンについては言えませんが、古いバージョンのPhotoshopで「見えない」色を見るためには、プラグインが必要です。一つ選んでください。PhotofreebiesSuperPNGSuperPNGの方が最近のようでごちゃごちゃしていません

トリックはなぜ効くのか?壁紙が不透明なのは、「後ろ」に何もないからでしょう?私の推測では、Windowsはアルファチャンネルの情報を破棄して、その過程で隠されたRGB値を明らかにしているのではないかと思います

60  Rhaenys  2017-06-29


Nihalさんの回答に補足すると、これはGIMPの「アンチイレース」ブラシを使えば再現できます。消し込みブラシはアルファチャンネルを追加したり削除したりすることができます (Alt キーを押しながら消し込みと消し込み防止を切り替えます)

Kritaの場合は、こんなことができます。Layer > Split Alpha > Alpha into Mask.この後、先ほど作成した透明度マスク1のチャンネルを非表示にしたり削除したりすると、フル画像が表示されます

Windowsの背景は後ろに何もないわけにはいかないので、透明度を剥がして表示しているだけなのでしょう(見た目からして32ビット画像を24ビットにするのは手っ取り早いし汚い)

13  Blerg  2017-06-30


一点だけ明確にしておきます。これはバグではなく、png仕様で指定された動作です。具体的には、ビューアやコンバータが透明度を理解できない場合や、透明度がコンテキストや用途に適していない場合は、アルファチャンネルを無視することができると仕様では述べられています。さらに、この仕様では、アルファチャンネルが無視された場合に画像が有用になるように、すべての画像生成者が透過色を設定するように求めています(私の言い換えですが)。(私の言い換えですが、仕様書を読んでから数年が経ちます)

3  hildred  2017-07-01


Adobe After Effectsでアルファチャンネルでビデオをエクスポートしようとすると、この問題が発生しました。ProRes 4444アルファ、アルファ付きアニメーションコーデック、.pngシーケンスなどの透明度のあるビデオフォーマットに隠し背景をエクスポートしようとします。隠された背景はタイムラインのプレビューには表示されませんでしたが、After Effectsでエクスポートされたビデオに表示されないようにする方法を見つけることができませんでした

SuperPNG (Photoshop用のファイルフォーマットプラグイン)を使えば、既に提案されているように、1つの.pngファイルから隠し背景を削除することができます。しかし、大量のPNGファイル(PNGのシーケンス)を扱う場合には、それができません

Photoshopで隠れた背景を見るには、[レイヤー] / [レイヤーマスク] / [透明度から]をクリックします。今度は「レイヤー」ペインを見てみましょう。隠された背景はそこにあり、マスクを削除することで、エディタ領域で表示できるようにすることができます

ImageMagick を使用して、非表示の背景を削除することができます。1つのファイルに対しても、複数のファイルを一括で処理することもできます。Windowsのコマンドラインでは、*.pngを処理するためにこれを行うことができます(非常に遅いですが、少なくとも動作はします)

for %f in (*.png) do C:\ImageMagick\convert.exe -alpha on -background none -flatten "%f" "fixed_%f.png"

0  Jim Hoyle  2020-09-11


タイトルとURLをコピーしました