• ベストアンサー

PNGは画像劣化しない?

PNGは画像が劣化しないと聞いたのですが、本当ですか? 色数を24bit?ではなく8bit?で保存しても同じですか?

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

元が24bitものもを、8bitにしたら、劣化する可能性があります。 ここでの「劣化しない」というのは、「元画像」→「PNGでの圧縮」→「展開した画像」 としたときに、「元画像」と「展開した画像」がまったく同じになる、という意味です。 「24bitの元画像」→「PNGでの圧縮」→「展開した24bitの画像」 「8bitの元画像」→「PNGでの圧縮」→「展開した8bitの画像」 では、それぞれ、元画像と展開画像が完全に一致します。 「24bitの元画像」→「8bitの元画像」→「PNGでの圧縮」→「展開した8bitの画像」 の場合は、24→8bitの段階で劣化します(元の画像に戻すことができなくなる) (例外は、24bit画像で256色以下しか使われていない場合、かつ、その色をパレットとして使った場合です。この場合、24→8bitで足りない色は無いので、元に戻せます)

その他の回答 (2)

  • asciiz
  • ベストアンサー率70% (6642/9410)
回答No.3

>PNGは画像が劣化しないと聞いたのですが、本当ですか? 劣化しないというか、PNGは「可逆圧縮」なのです。 例えばJPEGは、細部のディティールや色の細かい変化情報を落として、圧縮しやすいようにしてデータ化するので、保存した物を再び表示したときに、元の画像と色の一致しないドットがいくつも出てきます。 すなわち「不可逆圧縮」です。 PNGは、元の画像の1ドット1ドットの色を、完全に保ったまま、データサイズを縮小させるよう、努力します。 そうして圧縮されたPNG画像は、再表示すると、元の画像と完全に一致します。 PNG圧縮は、ランダム性の高い、写真画像等の圧縮には向きません。 Windows画面等ののっぺりした画面表示であるとか、色変化にしても均一なグラデーションであると、かなり圧縮することが出来ます。 >色数を24bit?ではなく8bit?で保存しても同じですか? この場合、「色数を24bitから8bitに落とした」時点で、画像劣化が発生しています。 しかしそこから先、8bitカラーのBMPを、8bitカラーのPNGで圧縮すれば、それを再現したとき、元の「8bitカラーBMP」と、完全に一致します。(可逆圧縮) 24bitカラーの画像からしたら劣化したことになりますが、それはPNGのせいではありません。 24bit→8bitにする処理の部分で、色数を落とし、タイルパターンやディザで近似色に置き換えた時点で、画像劣化したわけです。 まあ、PNG圧縮ツールでは大概1つでやってしまいますから、見分けがつかないかもしれませんが…。 「24bitカラー画像を8ビットカラー画像に変換する」という部分で別のツールを使うと、ツールにより劣化の度合いが違ってくることも考えられます。 それを、PNGにて圧縮すれば、8bitカラーに落とした時点のクオリティが完全に再現されます。

  • SPROCKETER
  • ベストアンサー率26% (2027/7572)
回答No.1

 PNG画像は圧縮方式の改良により、BMPファイルからPNGファイルに変換しても画像劣化が起こらないようにしたものです。  PNGの仕様に関しては以下のリンクを参照してください。

参考URL:
https://ja.wikipedia.org/wiki/Portable_Network_Graphics

関連するQ&A

  • 8bit透過PNGを書き出すと劣化?する

    最後にソースを記載しますが、やりたいことは 8bitの透過PNG画像を複数枚読み込み、重ねた1枚の画像を出力する、ということなのですが、どうにも画質が劣化?してしまって解決法が見出せずにいます。 以下のソースで読み込んでいるPNG画像は8bitの透過PNG画像で、BufferedImage.TYPE_BYTE_INDEXEDのBufferedImageに書きだして保存しているだけ(のつもり)です。 それだけで読み込んだもの、書きだしたものの品質が大きく違ってしまっています。 Javaで画像を扱ったことがほとんど無いので、そもそもTYPE_BYTE_INDEXEDを使うとそういう結果になるのは仕方のないことなのか、というのもわかりません。 ちなみにTYPE_4BYTE_ABGRを使うと劣化なく出力されますが、32bitなので。。。 どうにか読んだ8bit透過PNG画像をそのままの品質で書きだす方法はないものでしょうか? アドバイスをお願いいたします。。 ※添付画像は左側が下記ソース中のsrc.pngにあたるもの、右側がdest.pngにあたるものです。 画像添付がjpegしかできなかったので透過していませんが、円形以外の白色部分は実際には透過しています。 -以下ソースです-------------------- public class ImageTest { public static void main() { BufferedImage pileupImg = null; try { pileupImg = ImageIO.read(new File("C:/src.png")); } catch (IOException e) { return; } PixelGrabber pg = new PixelGrabber(pileupImg, 0, 0, -1, -1, true); try { pg.grabPixels(); } catch (InterruptedException e){} Image img = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(256, 256, (int[])pg.getPixels(), 0, 256)); BufferedImage bi = new BufferedImage(256, 256, BufferedImage.TYPE_BYTE_INDEXED, (IndexColorModel)pileupImg.getColorModel()); Graphics g = bi.getGraphics(); g.drawImage(img, 0, 0, null); try { ImageIO.write(bi, "png", new File("C:/dest.png")); } catch (IOException e) {} return; } }

  • 画像の劣化について詳しく教えて下さい

    質問させて頂きます。 jpgの画像を縦や横に回転させると劣化するらしいのですが これは本当にjpg形式のみに限ってなのでしょうか? png形式で試してみたところ画像の見た目はほとんど変わりませんでしたが 何故かファイルサイズが30バイト程大きくなっていたんです。 詳しい回答よろしくお願いします。 それとjpgからpng jpgからbmpなどへ画像の形式を変換しても画像の質は劣化しないものなんでしょうか? jpgから他の形式へ変更してから更にそこからまたjpgに変換すると劣化するのは分かっています。 こちらも回答よろしくお願いします

  • 画像 gif PNG の減色

    PNGファイルの色数を指定し、5色に減色したのですが、 16色に減色したときとファイルサイズが変わらないのはなぜでしょうか? 24bitから16色に減色したときはかなりファイルサイズは小さくなったのですが……

  • 透過指定の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と表示されるのでしょうか. 思い違いもあるかと思うのですが,ご存知の方がいらっしゃいましたら ご教授いただきたくよろしくお願い致します.

  • photoshopでのPNG(4bit)での保存

    photoshopでのPNG(4bit-16色)での 保存方法をご存知の方がおられましたら 教えて下さい。 【web用に保存】からPNG形式で保存 しようとしたのですが、 PNG-8(8bit) PNG-24(24bit) しか選択肢がなく、どうしても 16色↓のパレットに (黒等の)余計な色が入ってしまいます。 (容量も元データのgifよりかなり大きくなる) もしくは他のソフトでPNG-4bit-透過色選択可で バッチ処理のあるフリーソフトを ご存知でしたら教えて下さい どなたか宜しくお願いします

  • pngの圧縮

    pngの圧縮をしたい時あなたならどうしますか?教えてください 僕は、保存するたびに画質が劣化するのが嫌なのでスクリーンショットを取るときはpngそして、ブログになど貼るときはjpgにしてファイルサイズを小さくしています。 ですが、pngでもちゃんと処理をしてあげればそこまで大きな画質の劣化もなくファイルサイズを減らすことができると聞きました。 そこで、他の人はどのようにpngなどの画像ファイルを取り扱っているかきになったのです。 jpgにしたあとの圧縮方法なども気になるので出来たら教えてください

  • 壁紙画像の劣化

    ふと思ったのですが、PNG形式の壁紙を設定するとJPEGのような劣化した画像になってしまいますよね? XPではPNG画像もそのまま劣化せずに壁紙に設定できたはずなのですが。 エクスプローラーからコンテキストメニューで壁紙に設定すると画像の形式に関係なく劣化しますし。 だからといって個人設定からではJPEGとBMPしか選択できないようです。 こればかりはBMPかJPEGにするしかないのでしょうか...

  • 保存する際に無題.pngとなる画像について

    画像を右クリックで名前を付けて保存しようとした際に、無題.pngと表示されました。 その時、pngのまま保存したものと、拡張子をjpgに変えて保存したものとではなぜかファイルのサイズ(容量?)が変わっていました。 pngで保存したものの拡張子をjpgに変更してもサイズに変化はなかったのですが、名前を付けて保存の際に拡張子jpgに変更していたものはpngの約3倍のサイズになっていたのです。 その後しばらくして、もう一度画像があったサイトを開き、同様に保存の操作を試みたところ、なぜかabcdefg.jpgといった具合に、初めの名前が~.jpgでした。 それを保存したところ、無題.pngだったのファイルの1/5ほどのサイズのjpgファイルが保存されました。 そのjpgファイルの拡張子をpngにしてもサイズは同じで、さらにpngからjpgに変更してもサイズは変わりませんでした。 ちなみに、上記に出てくる同じ画像が元の、無題.jpg系も~.jpg系も画像自体は目に見えて劣化などは感じられませんでした。多分全く同じ画像が見られると思います。 初め「無題.png」だったものが、後に保存を試みた際に「~.jpg」として保存されようとしたのはなぜですか? jpgはpngより汚いと聞いていましたが、なぜjpgのほうが大きくなったのでしょうか? 拡張子をjpgとpng間で変更させる場合、ふつうどのようにサイズが変わるものなのでしょうか? 長文となってしまいましたが、一部でも良いのでご回答よろしくお願いいたします。

  • 画像の劣化について

    画像の劣化について PCに保存している画像・ムービーを頻繁に見ていたら画像は劣化するのでしょうか。 大切なデータのため、気になります。 よろしくお願いします。

  • 24bit画像の画像編集での劣化について

    色空間のウィキペディアの説明に 24bitでは画像編集の過程で劣化が無視できないため、48bit(各色16bit)などより多ビットで扱うことがある という表記があります。 http://ja.wikipedia.org/wiki/%E8%89%B2%E7%A9%BA%E9%96%93 これを読んで、画像編集の過程とはどんな作業を言うのかという疑問が起こり以下のような質問をしました。 http://qa.itmedia.co.jp/qa7896553.html 得た回答は ソフトに画像を貼り付けトリミングや、画像の貼り付けを行っただけでも、 jpegは周辺情報を元に画像を構成するため、周辺情報が変化すれば編集部分以外も変化シ劣化するということでした。 ここでは、JPEGについての回答は得ましたが、24bitPNGや24bitTiffでの場合はどうなるのでしょうか

専門家に質問してみよう