ソフトウェアエンジニアは、多くのデータを小さなスペースに収める新しい方法を常に開発してきました。私たちのハードドライブが小さいとき、それは本当でした、そしてインターネットの出現はちょうどそれをより重要にしました。ファイル圧縮は、私たちをつなぐ上で大きな役割を果たし、私たちがより少ないデータを送信できるようにするので、より高速なダウンロードが可能になり、より多くの接続をビジーなネットワークに合わせることができます。. だからそれはどのように動作しますか? その質問に答えるには、確かにこの記事で取り上げることができる以上に、非常に複雑な数学を説明する必要がありますが、基本を理解するために数学的にどのように機能するかを正確に理解する必要はありません。. テキストを圧縮するための最も一般的なライブラリは、非常に高い圧縮率を達成するために両方を同時に使用する2つの圧縮アルゴリズムに依存しています。これら2つのアルゴリズムは、「LZ77」と「ハフマンコーディング」です。ハフマンコーディングは非常に複雑であるため、ここでは詳しく説明しません。主に、それは短い割り当てにいくつかの空想の数学を使用しています バイナリコード 個々の文字に合わせて、ファイルサイズを縮小します。あなたがそれについてもっと知りたいならば、コードがどのように働くかに関するこの記事、またはComputerphileによるこの説明者をチェックしてください. 一方、LZ77は比較的単純なので、ここで説明します。重複する単語を削除し、その単語を表す小さな「キー」に置き換えます。. たとえば、この短いテキストを見てください。 LZ77アルゴリズムはこのテキストを見て、「howtogeek」を3回繰り返すことを理解し、それを次のように変更します。 それから、テキストを読み戻したいときは、(h)のすべてのインスタンスを「howtogeek」に置き換えて、元のフレーズに戻します。. 私達はこのように「ロスレス」圧縮と呼びます - あなたが入れたデータはあなたが出したデータと同じです。何も失われない. 実際には、LZ77はキーのリストを使用しませんが、代わりに2番目と3番目の出現箇所をメモリ内のリンクに置き換えます。 だから今、それが(h)に到達するとき、それは“ howtogeek”を振り返って代わりにそれを読むでしょう. あなたがより詳細な説明に興味があるなら、Computerphileからのこのビデオはかなり役に立ちます. 今、これは理想的な例です。実際には、ほとんどのテキストはほんの数文字のように小さいキーで圧縮されています。たとえば、「the」という単語が「there」、「their」、「then」のように表示されていても圧縮されます。テキストを繰り返し使用すると、圧縮率がおかしくなります。 「howtogeek」という単語を含むこのテキストファイルを100回繰り返します。元のテキストファイルのサイズは3キロバイトです。ただし、圧縮時には158バイトしかかかりません。それはほぼ95%の圧縮です. これは明らかに、同じ単語を何度も繰り返していたので、これはかなり極端な例です。一般的なやり方では、たいていはテキストであるファイルにZIPのような圧縮フォーマットを使用しておよそ30-40%の圧縮を得るでしょう. ところで、このLZ77アルゴリズムは、テキストだけでなくすべてのバイナリデータに適用されますが、テキストは一般に、ほとんどの言語で使用されている単語の数が多いため圧縮が容易です。中国語のような言語は、英語よりも圧縮するのが少し難しいかもしれません、例えば. 画像とビデオの圧縮方法? ビデオとオーディオの圧縮方法はまったく異なります。あなたがロスレス圧縮をすることができ、データが失われることがないテキストとは異なり、私たちはあなたがいくらかのデータを失う“ロスのある圧縮”と呼ばれるものを持っています。圧縮するほど、失われるデータが増えます。. これが、人々が何度もアップロード、共有、およびスクリーンショットを撮ったことのあるひどい見栄えのするJPEGにつながるものです。画像が圧縮されるたびに、それはいくつかのデータを失います. これが一例です。これは私が撮ったスクリーンショットで、まったく圧縮されていません。. それから私はそのスクリーンショットを撮って、それを低品質のJPEGとしてエクスポートするたびに、Photoshopで何度も実行しました。これが結果です. かなりひどいね? まあ、これは最悪の場合のシナリオで、毎回0%のJPEG品質でエクスポートします。比較のために、ここに50%の品質のJPEGを示します。これは、拡大してよく見ない限り、ソースPNG画像とほとんど見分けがつかないものです。. この画像のPNGサイズは200 KBですが、この50%品質のJPEGはわずか28 KBです。....