- 締切済み
透過指定のPNG8がビット深度32bitとなる理由
WEB用にIllustratorで作成した画像を,PNG-8形式で背景を透過するように保存したところ下記のようになり,自身でも調べたのですが不明でしたので質問させてください. (使用ソフト:Illustrator(CS4)OS:WIN XP) 1)Illustratorで「WEBおよびデバイス用に保存」→PNG-8形式選択→「透明部分」にチェック→保存 ビットの深さは32bitと表示される(プロパティから確認) 2)透過を指定しないとビット深度は8bitと表示される PNG-24であれば,RGB各8bitとαチャネル8bitで32bitとなるのは理解できるのですが PNG-8では透過を指定しても,ビット深度は8bitなのではないかと思うのです. なぜ,透過指定したPNG-8が,32bitと表示されるのでしょうか. 思い違いもあるかと思うのですが,ご存知の方がいらっしゃいましたら ご教授いただきたくよろしくお願い致します.
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- cutephoto
- ベストアンサー率48% (51/105)
>tRNSチャンクの情報は、アルファチャネルとして扱われるため、深度が32bitと表示される。 ということでしょうか。 カラータイプが単純なグレーやRGBの時に、tRNSに透過情報が使われます。 アルファチャンネルを使う場合には、アルファチャンネルを使うため tRNSは使われません。 イラストレータなどでの透過の場合には、 内部的にマスクが作られていて、これが透過情報になっています。 結果、RGB+アルファチャンネルとなってしまいます。 なのでこのtRNSには何も入っていないか、 仕様では不要としているのでtRNSそのものが 存在していないと思います。 ※バイナリ・エディタなどでtRNSを検索してみてください。 イラストレータやフォトショップでは、 この情報を表示出来ないみたいですが、 GIMPなどで表示をするとアルファチャンネルが存在していることがわかるかと思います。 何故、RGB透過を一切採用せずに 全てRGB+アルファチャンネルという方式なのかについては、 これまでのPNGフォーマットの仕様が出来るまでの経緯や、 アドビでのソフト開発者がどう考えているのかまでは わかりませんので、お答え出来ません。 ※GIFの特許の問題が絡んでいたのかもしれませんし・・・。 RGB+アルファチャンネルなのかについての憶測ですが、 RGB透過(tRNS)だと1つの透過情報しか持つことが出来ません。 それに対し、アルファチャンネルだと複数の透過(マスク)情報を持つことが出来る為、 このRGB+アルファチャンネルを採用しているのでは? ※実際に複数の情報を操作出来るかどうかは、やったことがないのでわかりませんが、 PNGの仕様では複数のアルファチャンネルを持つことや、不透明度を指定することが出来ます。 勿論、1色だけでの透過でしたら無意味にファイルサイズが大きくなってしまいますが・・・。
- cutephoto
- ベストアンサー率48% (51/105)
言われている通りtRNSチャンクに透過の情報が入ります。 そこまで調べたのでしたら、仕様にカラータイプというのもあったかと思いますが、 グレー、インデックスカラー、トゥルーカラーの3つが有ったと思います。 Significant bits(sBIT)のところを調べるとわかるかと思いますが、 インデックスカラーであれば透過の為の情報は深度8なのですが、 アルファチャンネルとして扱われると、 仕様上トゥルーカラー+アルファという深度しか存在しない為です。 なので、イラストレータでは、 この透過情報に関してGIFのように、RGBでの透過を使わずに アルファチャンネルで行う為に ビット深度が8では無く32となってしまうのではないでしょうか? RGBでの透過であれば、深度は8になると思います。 ただその様な状態での透過を扱える仕様になっているソフトがあるのか無いのかまでは わかりません。
お礼
ご回答頂きありがとうございます。 少しずつ理解が進んできたように思います。確認させて頂ければと思うのですが、 Illustratorをつかって、透過指定したpng8を保存した場合、 tRNSチャンクの情報は、アルファチャネルとして扱われるため、深度が32bitと表示される。 ということでしょうか。 (Illustrator独自の処理の仕方なのでしょうか、不思議です…)
- cutephoto
- ベストアンサー率48% (51/105)
8ビットでも24ビットでも アルファチャンネルのビット位置が、 25ビットから32ビットの8ビットとなっている為です。 なのでどちらの場合でも深度が32となってしまいます。
お礼
ご回答ありがとうございます。 度々すみませんが、もう少し質問させてください。 「アルファチャンネルのビット位置が、25ビットから32ビットの8ビットとなっている」 とは、png8の場合は、9~24bitまでは空いていても、α値を指定する部分(25~32bit)に(不)透明度を示す数値が入る、ということでしょうか。 そして調べていたところ、「tRNS チャンク」という記載を見たのですが、これがそのお話にある「アルファチャンネルのビット位置」にあたるのしょうか。
お礼
ご丁寧にご回答頂きありがとうございます.おかげさまで理解が増してきました. カラータイプが単純なグレーやRGBの時に、 tRNSに透過情報が使われます。アルファチャンネルを使う場合には、アルファチャンネルを使うためtRNSは使われません。 イラストレータなどでの透過の場合には、内部的にマスクが作られていて、これが透過情報になっています。結果、RGB+アルファチャンネルとなってしまいます。 なるほど.イメージができてきました. なのでこのtRNSには何も入っていないか、 仕様では不要としているのでtRNSそのものが 存在していないと思います。 バイナリデータについて当方詳しくはわからないのですが, 透過指定したPNG8についてバイナリエディタで見てみたところ,tRNSチャンク部分は, 「74 52 4e 53 ff ff ff ff ff ff ff ff ff ff ff ff~ 00」と表示されてありました. (アルファチャネルのあるPNG24では,お話の通りtRNSの記載が見当たりませんでした) また(GIMPは使用したことがなかったので)AzConvPNGというソフトで見たところ,透過指定したPNG8は,「アルファなし」と表示されておりました. そこで調べてみて気付いたのですが,WINDOWS 7にて,当該ファイル(32bitと表示される透過指定したPNG8)のプロパティを見ましたところ,ビット深度は8と表示されてありました. このことから,もしかすると32bitと表示されてしまうのは, WIN XPが関係する可能性もあるかと思ったりもするのですが…. (Microsoft answersにも,このトピックを見つけられなかったので詳細は不明のままです)