iimon TECH BLOG

iimonエンジニアが得られた経験や知識を共有して世の中をイイモンにしていくためのブログです

LINEやInstagramで送った写真の画質が落ちる仕組み

はじめに

友人に写真を送る時、LINE や インスタ だと画質悪いから、AirDropで送ってと言われたことがあります。写真の画質が落ちる仕組みについて気になったので調べてまとめました。

この記事では以下の内容を扱います。

  • AirDrop・LINE・Instagramで画像に何が起きているか
  • JPEG がどのように画像を圧縮しているか(DCT・量子化)
  • なぜ再保存するたびに劣化するのか

画像圧縮の種類

画像ファイルの圧縮には大きく 可逆圧縮非可逆圧縮 の2種類があります。

可逆圧縮(Lossless)

可逆圧縮は、データを失わずに圧縮できる方式です。画像フォーマットの PNG やファイル圧縮の ZIP は可逆圧縮です。

データ内の繰り返しパターンをひとまとめに表現することでサイズを削減し、展開すれば元のデータが完全に復元されます。テキストのように一文字でも欠けると内容が変わってしまうデータに必要な方式です。

非可逆圧縮(Lossy)

非可逆圧縮は、元のデータに戻せない圧縮方式です。JPEG は非可逆圧縮です。

画像を重要度の異なる複数の部分に分解し、重要度の低い部分を削ることでサイズを削減します。一度削られた情報は二度と取り戻せません。写真・音声など、多少の劣化が気づかれにくいコンテンツに広く使われています。

image.png

可逆圧縮は元データへ完全に戻れる双方向の関係ですが、非可逆圧縮は一方通行で情報が失われます。

AirDrop・LINE・Instagramで何が起きているか

以下の検証では、iPhone で撮影した HEIF の画像を使用しました。HEIF は iPhone がデフォルトで使用する写真フォーマットです。

AirDrop

AirDrop は Bluetooth と Apple 独自の Wi-Fi 技術を使い、インターネット接続やサーバーを経由せず、デバイス間で直接ファイルを転送します。サーバーを介さない直接転送のため、画像の変換や圧縮処理が行われません。

検証

HEIF の画像を AirDrop で送信したところ、以下のとおりでした。

元画像 AirDrop 受信後
フォーマット HEIF HEIF
ファイルサイズ 1.1MB 1.1MB
解像度 3024 × 4032px 3024 × 4032px

左:送信元画像、右:受信画像

スクリーンショット 2026-05-26 20.27.28.png

フォーマット・ファイルサイズ・解像度・カラープロファイルのすべてが元のまま保たれており、一切変換や圧縮が行われていないことが確認できました。

補足:ファイルサイズが小さいほど量子化による情報の損失が大きく、輪郭や細部が失われます。解像度(ピクセル数)が小さいほど、画像に描写できる情報量が少なくなります。

LINE

検証

HEIF の画像を LINE で送信し、LINE で保存したところ、以下のように変換されていました。

元画像 LINE保存後
フォーマット HEIF JPEG
ファイルサイズ 1.1MB 314KB
解像度 3024 × 4032px 1108 × 1477px

ファイルサイズは元の約 1/3、解像度も約 1/3 に縮小されていました。JPEG への変換・圧縮・解像度のリサイズがされています。

LINE のトークで保存した画像 image.png

Instagram

検証

HEIF の画像をInstagramのDMで送信して保存したところ、以下のように変換されていました。

元画像 Instagram 保存後
フォーマット HEIF JPEG
ファイルサイズ 1.1MB 128KB
解像度 3024 × 4032px 1180 × 1572px

ファイルサイズは元の約 1/9、解像度は約 1/3 に縮小されていました。JPEG への変換・圧縮・解像度のリサイズがされています。

InstagramのDMで保存した画像 image.png

JPEG の圧縮の仕組み

LINE や Instagram で使用されている JPEG の圧縮の仕組みを見ていきます。

JPEG の圧縮は以下の工程で行われます。

  1. 色空間変換(RGB を輝度と色差に分離)
  2. クロマサブサンプリング(人間の目が鈍感な色差成分の解像度を落とす)
  3. ブロック分割(画像を小さなブロックに分割する)
  4. DCT(周波数成分に変換する)
  5. 量子化(人間の目に見えにくい成分を削る)
  6. エントロピー符号化(ゼロが多い係数を効率よくまとめてファイルサイズを削減する)

このうち、画質の劣化に直接関わるブロック分割、DCT、量子化について詳しく説明します。

1. ブロックへの分割

JPEG は画像を 8×8 ピクセルのブロックに分割します。 一般に、画像の中の隣り合うピクセルは似た値を持つことが多く、高い相関があります。ブロック単位で処理することで、この相関を利用して効率よく圧縮できます。

以下は、画像を 8×8 ピクセルのブロックに分割し、1 ブロックを拡大したイメージです。

image.png

このように画像全体がブロックに分割されます。分割するブロックのサイズは常に 8×8 ピクセルですが、ブロックの総数は画像サイズによって異なります。

たとえば、 iPhone 15 のデフォルト設定(24MP)で撮影した写真(4284×5712 ピクセル)では、約38万ブロックに分割されます。

2. DCT

分割した各ブロックに対して、DCT(離散コサイン変換)という処理を行います。DCT は各ブロックのピクセルの値を、以下の2種類の成分に分解します。

  • 低周波成分:画像のおおまかな色や明るさ(なだらかなグラデーションなど)
  • 高周波成分:輪郭や細部の情報(テキストや細かい模様など)

以下の図は、8×8 ピクセルのブロックが DCT によって 64 個の係数行列に変換される様子です。

image.png

左のブロックは左上から右下にかけてなだらかに暗くなるグラデーションです。隣り合うピクセルの値が似ており、「隣り合うピクセルは高い相関を持つ」という特性を表しています。 右の係数行列では、左上(低周波)のセルが特に濃く、その他は右下(高周波)に向かうほど白くなっています。

DCT 係数が大きいほど、その周波数成分が画像に多く含まれていることを表します。逆にゼロに近いほど、その成分はほとんど含まれていないことを表し、削除しても画質への影響が小さくなります。

先ほどの犬の写真のように、毛並みや床など隣り合うピクセルの色の差が小さい部分が多い写真では、高周波成分の係数の多くがゼロに近く、それらを捨てても画像の品質に大きく影響しません。

次の量子化ステップでは、この特性を利用して高周波成分が削られます。

補足:左と右の図はどちらも同じブロックを表しています。左は「各ピクセルがどれくらい明るいか」、右は「どの周波数成分がどれくらい含まれているか」を表しており、同じブロックの中身を別の視点で表現し直したものです。ピクセルの位置を並び替えたり移動したりしているわけではありません。

3. 量子化

量子化は、DCT 係数を粗く丸めることで情報を削る処理です。人間の目は高周波成分の誤りを検知しにくい特性があります。この特性を利用し、JPEG は人間が気づきにくい高周波成分のデータを優先的に削ることで、ファイルサイズを削減しつつ、画像全体の品質への影響を小さく抑えます。これが JPEG 圧縮において情報が失われる中心的な処理です。

image.png

量子化された係数はエントロピー符号化を経て JPEG ファイルとして保存されます。画像を表示するときは、各ブロックの係数に逆 DCT を適用してピクセルの値を復元し、元の位置に戻して一枚の画像として表示します。ただし量子化で削られた情報は完全に失われており、元に戻すことはできません。

なぜ再保存するたびに劣化するのか

JPEG を一度保存すると、量子化によって情報が削られます。 その削られた状態の画像をもう一度 JPEG で保存すると、残っている情報からさらに量子化が行われます。

左が元の画像で、右はInstagramのDMで「送信 → 保存」を10回繰り返した画像です。

image.png

繰り返すたびに画質が落ちていることが分かります。保存のたびに量子化が繰り返され、劣化が蓄積していくためです。

まとめ

LINE や Instagram で画質が落ちるのは、アップロード時にサービス側で JPEG への変換・圧縮処理が行われるためです。 AirDrop はデバイス間の直接転送であり、画質を保ったまま画像を共有できます。

JPEG 圧縮で画質が劣化する流れは以下のとおりです。

  1. DCT で画像を周波数成分に分解する
  2. 量子化で高周波成分(細部の情報)を削る
  3. 再保存するたびに量子化が繰り返され、劣化が蓄積する

さいごに

ここまで読んでくださりありがとうございます!

私の友人が、「インスタは画質悪いから!」と言っているのは本当だということがわかりました🙂

この記事を読んで少しでもiimonに興味を持ってくださった方がいらっしゃいましたら、まずはカジュアルにお話しましょう!ぜひお気軽にご応募ください!

参考

https://nokiatech.github.io/heif/technical.html https://tech.iimon.co.jp/draft/entry/Te_w7xrjrWt3lNgrSOoAuzNXN78https://www.britannica.com/technology/raster-graphics https://www.w3.org/TR/png-3/ https://www.ibm.com/think/topics/data-reduction https://www.britannica.com/technology/data-compression https://web.stanford.edu/class/ee398a/handouts/lectures/08-JPEG.pdf https://www.mathworks.com/help/images/discrete-cosine-transform.html https://sigproc.mit.edu/_static/spring25/lectures/DCT_and_JPEG-handout.pdf https://csg.csail.mit.edu/6.375/6_375_2008_www/projects/group3_report.pdf https://engineering.purdue.edu/~bouman/ece637/previous/ece637F1998/labs/lab8/pdf/lab.pdf https://ccrma.stanford.edu/~jos/Compression/JPEG_Image_Compression.html https://cs.stanford.edu/people/eroberts/courses/soco/projects/data-compression/lossy/jpeg/coeff.htm https://cs184.eecs.berkeley.edu/sp24/lecture/22-2/image-processing https://support.apple.com/guide/security/airdrop-security-sec2261183f4/web