• ベストアンサー

アルファチャンネルについて質問です。

アルファチャンネルについて質問です。 現在、透過PNGについて色々調べていて、分からない事があったので 質問します。 [Q1] PNGには8bitと24bitの形式がありますが、そこにアルファチャンネルを 追加することで ・8bit形式のものは16bitのPNG画像 ・24bit形式のものは32bitのPNG画像 となるのでしょうか? [Q2] アルファチャンネル付きのPNG画像のデータサイズ圧縮をする事は可能 なのでしょうか? 圧縮後も透過できる事とします。 以上の2点について解答お待ちしております。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

>Q1 PNGでは、各画素の持つ色情報は、 ・RGB各8bit=合計1画素あたり24bit ・RGB各16bit=合計1画素あたり48bit ・グレイスケール8bit=1画素あたり8bit ・グレイスケール16bit=1画素あたり16bit などが選べます。アルファチャネル付きの場合は、これにさらにα情報が付加されて、 ・RGBA各8bit=合計1画素あたり32bit ・RGBA各16bit=合計1画素あたり64bit ・グレイスケール8bit+アルファ8bit=1画素あたり16bit ・グレイスケール16bit+アルファ16bit=1画素あたり32bit のようになります。 いわゆる「24bit形式」と呼ばれるのは、このうち「RGB各8bitの1画素24bit」もしくは「RGBA各8bitの1画素32bit」で、画素情報をそのまま圧縮するフォーマットを刺します。 一方、「インデックスカラー」と呼ばれる形式もがあります。これは、画素情報を「色番号」で表現するものです。インデックスモードでは、1画素を8bitで表現します。これが、いわゆる「8bit形式」と呼ばれるものです。 インデックスモードでは、画像データとは別に、カラーパレットと呼ばれる「○番の色は△△である」という「色番号と色情報の対応表」をデータとして保持します。 このパレットに使う色情報としては、「RGBA各16bit=色情報64bit」なんかも使えるのですが、 普通「8bit形式」と呼ぶ場合は、 色情報は「RGB各8bitの1画素24bit」もしくは「RGBA各8bitの1画素32bit」のどちらかを指す場合が多いかと思います。 まとめると、 ・8bit形式は、アルファチャネルを追加しても、1画素あたりは8bitのまま ・24bit形式は、アルファチャネルを追加すると、1画素あたりは32bitになる ということになります。 >Q2 PNG画像は、可逆圧縮を行う画像フォーマットです。 アルファチャネル付の画像であっても、アルファチャネルごとデータは全て圧縮を行いますし、当然圧縮したデータ中にアルファチャネル情報は保持されています。 「アルファチャネル付のPNG画像」はすでに圧縮済なわけですから、 そこからさらに「データサイズ圧縮」することはできません。 (zipファイルを、さらにzipファイルに圧縮しようとしても、サイズはもう小さくならない、というのと同じことです) ただし、アルファチャネルを付けるかどうか以前の、PNGに関する基礎的な特性として、 ・使われている色数が256色以内であり、元の形式が 24bit形式なのであれば、8bit形式にすることでデータサイズが削減できる可能性はあります。 ・「フィルタリング処理」設定を適切に行う(圧縮しやすいように前処理にを行う)ことで、ファイルサイズを小さくできる可能性もあります。 (どちらの場合でも、PNGは可逆圧縮であり、情報の劣化はありません)

pekoo39
質問者

補足

早々の回答ありがとうございます。 参考になりました! ただ、また分からない部分が出てしまったので質問させて下さい。 ・PNG-8(256色)はαチャンネルを追加できない? ・PNG-24(フルカラー)からPNG-8(256色)へ変換を行った場合、αチャンネルは付かない? 要はαチャンネルはフルカラーにしか対応していないのかな?ということですね^^ よろしく願いします。

その他の回答 (1)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

質問者さんの補足で挙げられた疑問は、全て回答1で答えてるものなのですが、 説明がわかりにくかったようですみません。 > ・PNG-8(256色)はαチャンネルを追加できない? 出来ます。 > ・PNG-24(フルカラー)からPNG-8(256色)へ変換を行った場合、αチャンネルは付かない? 付けられます。 アルファチャネルのないタイプの、いわゆる普通の8bit形式PNGでは、 「RGB各8ビットの計24ビットで表現された色」を、画像全体で256通り使えます。 一方、アルファチャネル付の8bit形式PNGでは、 「RGBA各8ビットの計32ビットで表現された色」を、画像全体で256通り使えます。 8bit形式では、各画素の「色」をアルファチャネル込みで考えて、それで「256色使える」ということです。 (たとえば、黒(R=0,G=0,B=0,A=255)と完全透明(R=0,G=0,B=0,A=0)は、どちらもRGB値だけ見ると(0,0,0)で同じになってます。アルファ無しのPNGにする場合はどちらも同じ色で「1色」です。 ですが、アルファ込みのRGBA全体で見ると値が異なりますから、アルファ付8bit形式PNGで保存する際には黒と完全透明で「2色」と数えます)

pekoo39
質問者

お礼

僕の理解力が足りなくて、お手数おかけしました^^; おかげさまで知りたいことが解決して、作業が進められます(`・ω・´) ご協力ありがとうございました!