Чому люди використовують зображення у форматі JPG?


17

Я бачу зображення JPG скрізь. Але чому?

Файли PNG мають непрозорість, а JPG -. Я намагався експортувати деякі зображення до PNG та JPG для порівняння розміру, і вони обидва збігаються, або PNG менше (залежно від зображення).

введіть тут опис зображення

Це зображення у форматі JPG розміром 512x512, на якому написано "JPG"

введіть тут опис зображення

А це зображення в форматі PNG 512x512, на якому написано "PNG".

JPG склав 31,7 кб, а PNG - 25,9 кб

То що дає?


3
Щось, що ви також повинні знати, це те, що .png не втрачає, а .jpg - ні. Тож .png більше підходять для вихідних зображень, тоді як .jpg більше підходить для публікації.
Ніхто

1
@Nobody PNG може бути втратним або без втрат. Залежно від способу експорту.
DA01

8
FYI, ти рідко використовуєш JPG для лінійного мистецтва, як приклади, які ти тут використовуєш. Тож грунтуючись виключно на цих прикладах, ви б не використовували JPG. Якщо це були фотографії, ви зрозумієте, що отримаєте зовсім інші результати.
DA01

7
Я серйозно не можу повірити, що це питання витримало більше 10 секунд.
цивільний одяг

2
@ DA01 PNG ніколи не втрачає, але ви можете згубно маніпулювати зображенням, перш ніж експортувати його в PNG, щоб зменшити його. Специфікація PNG не знає про це нічого.
Ніхто

Відповіді:


35

Тому що вони набагато краще стискають зображення, які мають багато кольорів та неправильної форми, як фотографії.

Ви спробували той самий epxeriment, який ви робили, але потім із фотографією? .Png, ймовірно, буде помітно більшим, ніж будь-який .jpg, незалежно від коефіцієнта стиснення .jpg.

Приклад:

PNG зображення
.png малюнок, 110 к

jpeg в 100 якості
.jpg в 100% якості, 63k

jpeg в 30 якості
.jpg в 30% якості, потворний 9k

Якщо ви придивитесь уважніше, ви побачите деякі артефакти на 30% якості .jpg, але це здебільшого тому, що жорсткий край лампочки на гладкому зеленому тлі не надто добре піддається алгоритму стиснення. Ви можете мати звичайні фотографії, зменшені до навіть 10 або 5% якості, без втрат, які ви помітите з першого погляду.


3
FWIW: Після оптимізації PNG він має 34 КБ без будь-яких впізнаваних втрат.
Маріо

Нічого собі, я ніколи цього не знав. Я спробував перетворити фотографію, яку я взяв у PNG, і вона перейшла від 550k до 2933k. Чи знаєте ви, що зумовлює це?
JediBurrell

10
@JediBurrell Стиснення PNG завжди без втрат (AFAIK), тоді як стиснення JPG з часом знизить інформацію про зображення. У вашому випадку вже стиснене JPG, хоча добре виглядає зображення, буде містити краї навколо кожного відра (стислі маленькі квадрати, що складають зображення JPG), і PNG збирає ці артефакти, щоб вони не були втрачені. Отже, ваш PNG набагато більший за ваш оригінальний JPG. Повторне стиснення JPG за допомогою JPG зробить це гірше в багато разів - ефект називається "метаблокування".
Джей Верслуйс

2
@JediBurrell Якщо вас цікавлять технічні та математичні деталі, ви можете подивитися це відео від Computerphile.
Пол Манта

2
"гладкий зелений фон не надто добре піддається алгоритму стиснення": навпаки, градієнти дуже добре представлені JPEG, тоді як жорсткі краї не створюють артефакти поблизу. Для допитливих читайте про перетворення Фур'є в квадратний сигнал.
Льокі

13

JPEG підтримує фотографічну індустрію і передує PNG півтора десятка років, тоді як PNG був розроблений як заміна GIF, який був ревно захищений CompuServe. Люди подали позов за використання GIF на своїх веб-сайтах, наприклад, просто тому, що вони не використовували програму, яка була ліцензована CompuServe для створення цих зображень.

З самого початку JPEG був розроблений для відновлення деякого простору, зменшуючи файли за рахунок ідеальної якості пікселів. Навіть якщо встановити Q 100, це спричинить незначні, переважно невидимі артефакти - шкода буде зроблена, і кожного разу, коли файл буде змінено та збережено, подальше пошкодження відбуватиметься. Однак, якщо ви цього не зробите стільки разів, ви, ймовірно, ніколи не помітите ефекту, якщо не будете шукати його.

PNG, з іншого боку, абсолютно без втрат. Кожен піксель вірно відтворюється кожного разу, незалежно від того, скільки разів файл змінювався та зберігався. Однак існує обмеження в тому, наскільки добре ви можете стискати дані без втрат, хоча PNG використовує кілька прийомів, щоб запакувати якомога більше інформації в якомога менше байтів даних. Високоякісний JPEG, ймовірно, буде приблизно однакового розміру PNG без оптимізації або навіть більше. Коли PNG починає оптимізувати, скажімо, за допомогою фільтрів або регулювання розмірів вікон, файл стає меншим без втрат, тоді як JPEG повинен почати відкидати візуальну інформацію, щоб не відставати.

Отже, чому використовується JPEG? Зрештою, він взагалі поступається з точки зору вірності та місця для зберігання. Основна причина, звичайно, в тому, що це галузевий стандарт і має дуже широку підтримку. Практично кожна камера світу використовує або RAW (буквально, необроблені дані), або JPEG. Для цих камер є вбудовані апаратні процесори даних, щоб максимально швидко стискати дані JPEG тощо.

Ви побачите, що це та сама причина, чому GIF є скрізь все ще. Більшість програмного забезпечення підтримує GIF, в той час як PNG користується меншою підтримкою старого програмного забезпечення (наприклад, для відображення файлів PNG потрібен плагін для старих версій Internet Explorer). Незважаючи на те, що у нього є в'яла кольорова підтримка, вона підтримує анімацію, що PNG не робить (є пов'язаний формат файлу, APNG, який ніколи не знімав так, як це робив PNG). GIF досі залишається чемпіоном анімаційних зображень, оскільки це єдиний формат файлів, який може це зробити за умови широкої підтримки.

Вартість переходу з JPEG на PNG була б непомірною з точки зору апаратних засобів. Камерам знадобляться нові процесори, створені для підтримки швидкого стиснення PNG, наприклад, тому що вони мають жорсткий код для використання JPEG зараз. Ваші старі камери були б марними, тому що вам доведеться купувати нову із вбудованим чіпом PNG. Це також означатиме, що вам доведеться переконати виробника іти назустріч галузевим стандартам і почати виробництво таких пристроїв, а значить, для виправдання цього потрібно мати достатній попит, і такі камери спочатку були б дорожчі, ніж їхні JPEG-бази. аналоги Дуже важко змінити галузь.


PNG потенційно без втрат. Забезпечене програмне забезпечення може вибрати втрату даних для кращого форматируемого формату. Вавелетний характер jpeg унеможливлює його втрату.
joojaa

@joojaa Чи можете ви створити резервну копію твердження, що стиснення PNG "може втратити жорсткі дані"?
CJ Dennis

@joojaa JPEG використовує стиснення DCT, а не вейвлет. Ви можете подумати про JPEG 2000.
bcrist

7
Наскільки я розумію, що зменшення кольору відбувається до передачі зображення в кодек PNG. Тільки тому, що формат здатний зберігати вже втрачені дані, це не робить його втратою. Якщо змінити 32-бітний RGB з альфа-зображенням на 1-бітне чорно-біле зображення, втрачається багато даних, але це не PNG. Колір зменшення глибини є перетворення з втратою даних, а НЕ з втратами стиснення .
CJ Dennis

2
Моя помилка DCT це. Моя думка, що хоча PNG без втрат, не всі оптимізатори PNG є! Таким чином, не знаючи, що ви використовували, ви не знаєте, був процес втратний чи ні. Тож питання про безглуздість не такий простий, як думає людина. Так само, як зміни глибини кольору, перш ніж зберегти оптимізатори PNG, можуть змінити зображення іншими способами перед збереженням, щоб зменшити розмір зображення. @JCDennis Ці крихітки існують лише за ознайомленнями з їхніми інструкціями на сторінках.
joojaa

7

Щось не згадується дуже докладно - це спосіб роботи цих алгоритмів стиснення. JPEG орієнтований безпосередньо на фотографії, де незначні зміни кольору пікселів не помітні. PNG орієнтований більше на виготовлені зображення, що містять великі площі одного кольору, де стискання використовується в повній мірі, як у вашому прикладі величезної цілої білої фотографії з простою чорною літери. Якщо ви зробили таку саму фотографію і поклали білий фон, щоб з білого на сірий рівномірно зникати по стороні зображення, розмір png різко збільшиться, а jpg, мабуть, мало зміниться. Деякі кодування я зробив близько 10 років тому безпосередньо з обома цими форматами, щоб розпакувати ці типи файлів на bmps. JPEG дуже складний і складний. PNG дуже простий і дійсно ефективний на певних знімках, де колір не змінюється в горизонтальних лініях


1
Ви насправді пробували це? PNG - це не просто кодування довжини, а набагато складніше, ніж ви пропонуєте. Він використовує адаптивний алгоритм і ефективно стискає як тверді ділянки, так і повторні візерунки.
z7sg Ѫ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.