【お題】引っかけ問題(締め切り10月27日(日)23時)

JPEG画像は圧縮データなのに、なぜzipでさらに圧縮できるのでしょうか? zipデータをzipでさらに圧縮するとどうなりますか?

A 回答 (5件)

> zipファイルをzip化すると(それを無限に繰り返すと)極限(といっても行き着くところには限度があるのでしょうけれど)まで圧縮できるのでしょうかね。



zip の基本原理はあくまで、ある特定の 0 / 1 の並び順序を、別の短い文字列に置き換えるという事なので、いったん圧縮したファイルを何度も重複して圧縮しても効果は期待しづらいです。それは圧縮した zip ファイルの中に、そういう特別な文字列の順序が発生する確率が少なくなるからです。

zip ファイルの zip 化を繰り返すよりは、1回の zip で圧縮率を高い設定にして圧縮した方が良いです。lhaplus 等のソフトによっては、圧縮率を設定できます。圧縮率が高いほど時間がかかりますが、多少はファイルサイズが小さくなります。



> 他の圧縮方法が開発されれば、まだ圧縮できる?

既に開発されています。
https://qiita.com/shotets/items/b210e19b0b055135 …

ただし zip の場合は、今時は OS に解凍機能が標準装備されているので、誰でも特別なソフト無しに解凍できるというのが良さです。

また圧縮は、通信容量が貧弱だった昔は重要な技術でしたが、今は高速通信が普及しましたので、そこまで重要性が無くなって来ました。



> JPEGは圧縮にzipと同じ手法を一緒に織り込まなかったのかが不思議です。

用途が違うからです。先の回答に書いたように、jpeg は不可逆圧縮で情報量が落ちますが、代わりに解凍しなくてもファイルを読み取れます。zip は可逆圧縮で情報量は落ちませんが解凍しないとファイルを読めません。

ちなみに最近の office は拡張子が docx とか xlsx とか 4 文字拡張子になっていますが、これは圧縮ファイルです。ファイルを開く時に自動的に解凍して、ファイルを保存する時に自動的に圧縮しています。このため office ファイルを zip 圧縮しても、さほど圧縮率が期待できません。
    • good
    • 0

圧縮方法には大きく2つあります。


可逆圧縮と非可逆圧縮です。

可逆圧縮は、圧縮前と圧縮解凍後で同じデータになるようにしたものです。
その主な原理は「元のデータの特徴を別の表現に置き換える」ことです。
たとえば
AAAAAAAAAABAAAAAAAAA
というデータを
A10BA9
(Aが10個,B,Aが9個)に置き換えると20文字が6文字になります。
※ これは圧縮方法の一例で、実際にZIPがこうやっている、というわけではありません。

可逆圧縮には理論的な圧縮率の限界があります。
この限界は圧縮前の元のデータに依存します。
限界まで圧縮されたデータは、それ以上圧縮できません。

限界に近付けるためには、複雑な計算や試行錯誤が必要になり、その分時間やメモリが必要になります。


可逆圧縮の限界を超えるために考えたのが非可逆圧縮です。
これは元データを完全再現することをやめて、「元データに近いもの」にすることで圧縮率を高めたものです。
具体的には、可逆圧縮で圧縮率が高くなるような改竄をしたり、そもそもの元データを間引いたりします。
つまり、「データ改竄」+「可逆圧縮」で構成されています。

多くの場合では、改竄することになるので使えません。
ですが、画像や音声のような「人間が見て気付かないくらいの違いなら問題ない」ものに対しては有効です。

たとえば、先の
AAAAAAAAAABAAAAAAAAA
が A:青 B:Aよりちょっと薄い青 という画像だった場合、 BをAに変えても「全体で青っぽい」のは同じです。
そこでBをAに変えると
A20
と3文字になり可逆圧縮時の6文字よりも小さくなります。
※ 実際のJPEGではもっと自然になるように工夫してデータを間引いています。


「データ改竄」の方が、圧縮の処理にかかるコスト、圧縮率、解凍後の出来等に大きく影響するので、「可逆圧縮」部分はコストのかかる「限界まで圧縮」は目指さないである程度の圧縮で済ましているのが実際の使われかたです。
そのため、より限界を目指している可逆圧縮で圧縮すると、更に圧縮できることがあります。
JPEGをZIPに圧縮すると小さくなる理由の一つはこれです。


また「圧縮ファイル」の中身には「圧縮されていないデータ」も多く含まれています。
ZIPだったらファイル名だとか、JPEGだったら撮影場所等のタグとか。

ZIPをZIP圧縮したとき、これらのデータが圧縮されたり、データが加わったことで「圧縮しやすいパターン」になったりで、元のZIPより小さくなることはあります。
一方で、前記で減った以上に、ファイル名等の情報の分が 増えて結果元よりサイズが大きくなることもあります。
    • good
    • 0

jpeg 画像は、元画像(bmp=ビットマップ画像)よりディテールを省略し、画像データを間引く不可逆性圧縮です。

そのため、画像としては元画像より必ず劣化した画像になります。ただ、圧縮率によってはかなり画像データ量が少なくなるため、コンパクトデジタルカメラやスマートフォンのデジタルカメラ等ではデフォルトの保存ファイル形式になっています。

JPEGを圧縮・変換する方法は?無料ツールやJPEGとJPG、PNGとの違いも解説
https://www.profuture.co.jp/mk/column/28849

元々圧縮されている jpeg 画像ですが、更に zip で圧縮するとどうなるかと言う点ですが、それはある程度までは圧縮することはできます。これは、ファイルで共通の部分を見つけて置き換える方法を取ります。ただし、zip での圧縮率を上げると、圧縮・解凍共に処理に時間が掛かります。その上、jpeg データの容量は元々圧縮されていますので、余り少なくはならないでしょう。

「見る・聞く」技術 画像圧縮技術
https://www.fujitsu.com/jp/about/research/techgu …

jpeg 自体が圧縮率を変更することができます。どれくらい圧縮しているかによりますけれど、zip の圧縮とは前述のように、圧縮する方法が異なりますので、圧縮すること自体は可能になります。

zipファイルとは?圧縮・解凍の方法を紹介【Windows】
https://www.mouse-jp.co.jp/mouselabo/entry/2024/ …

zip による圧縮は可逆性圧縮でので、元のデータに戻ることが可能です。複数のファイルをまとめて一つのファイルにする目的でも使われていますので、画像用と言う訳でもありません。また、zip 圧縮したファイルは画像データとしては表示できませんので、画像データにする場合は解凍しなければなりません。

と言う訳で、jpeg 画像を zip にて圧縮した場合、データ容量は僅かに少なくなるかも知れません。ただし、jpeg 画像で繰り返しのデータが見るから無い場合は、殆ど圧縮できなこともあるかも知れません。実際に jpeg 画像を圧縮してみるほかありませんね。

jpeg による画像圧縮と zip によりデータ圧縮は、似た構造ではありますが、不可逆性圧縮と可逆性圧縮の違いがありますので、その辺りの違いが判れば使い分けができると思います。

まぁ、jpeg 画像に時点で圧縮されていますので、zip にしてもそれ程データ量は減りませんし、むしろ複数の jpeg 画像を一つにファイルにまとめて zip ファイルにしてメールで送ると言った、使い方をされることが多いでしょうね。
    • good
    • 0

> JPEG画像は圧縮データなのに、



JPEGは圧縮率を指定できます。
そこそこの圧縮の場合、ファイルサイズは多少大きいですが、素早く解凍できるってメリットがあります。
標準だと85%くらいになってるハズ。

そういうファイルであれば、zipでもう少し圧縮できる場合があります。

> zipデータをzipでさらに圧縮するとどうなりますか?

上と同じ理屈で、もうちょっと圧縮できる場合もあるし、ある程度まで行くと、
「これがこういう圧縮ファイル+以下圧縮データ」
ってファイル形式の「これが~」の部分がファイルサイズ増やす事になるので逆効果になる。
    • good
    • 0
この回答へのお礼

私は写真をやっていますので、JPEGは圧縮率が指定できることはよく知っています(圧縮率を上げるほど画質は低下します)。

なぜJPEGは圧縮にzipと同じ手法を一緒に織り込まなかったのかが不思議です。そうすれば、これ以上圧縮できないところまでデータ量を下げられたのに。
開発者が違うためなのでしょうかね。

お礼日時:2024/06/28 21:46

圧縮の方法が異なるからです。



jpeg の場合は、細か過ぎて気にするほどでも無いような部分の情報を落としてしまいます。人の顔の写真で言えば、元の画像が髪の毛1本1本まで丁寧に描いていたとしても、jpeg で圧縮してしまうと髪の毛100本くらいまとめて描かれたような、遠くから見たら分からないけれどズームしたら分かるような劣化処理がされます。

zip の場合は、ファイルの 0 と 1 の二進数が並ぶ数字に法則性を見つけて、その法則に従ってデータ量を減らします。
    • good
    • 0
この回答へのお礼

zipファイルをzip化すると(それを無限に繰り返すと)極限(といっても行き着くところには限度があるのでしょうけれど)まで圧縮できるのでしょうかね。
他の圧縮方法が開発されれば、まだ圧縮できる?

お礼日時:2024/06/28 21:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A