Снижает ли качество изображения простое открытие и закрытие файла JPEG?

У меня было довольно много уроков фотографии, я прочитал много книг по фотографии и просматривал множество форумов. И я не могу найти последовательный ответ на этот вопрос. Один «лагерь» говорит, что качество изображения теряется каждый раз, когда вы открываете и закрываете файл JPEG (из-за сжатия). Другой лагерь говорит, что качество изображения не потеряется, если вы не отредактируете фотографию, а затем сохраните ее повторно.

Есть ли разница, если:

  • Я открываю изображение в стандартном просмотрщике изображений и просто «закрываю» изображение?
  • Я открываю изображение в редакторе Photoshop Elements и закрываю его там?
  • Если я просто закрою изображение или пересохраню его?

Может ли кто-нибудь дать простой ответ, когда закрытие или сохранение JPEG приводит к снижению качества изображения, а когда нет?

Открытие JPEG не «распаковывает» его, а закрытие, таким образом, не «повторно сжимает» и не приводит к потере качества. Сжатие (и «повреждение») выполняется при первоначальном создании JPEG, а не при его открытии.
@ElendilTheTall: при открытии изображения JPEG оно определенно будет распаковано, по крайней мере, если под открытием вы подразумеваете его фактическое отображение, а не операцию с файловой системой.

Ответы (12)

Это основано на недоразумении. Потеря качества происходит только во время сжатия, когда изображение сохраняется в формате JPEG. Но неважно, редактировалось оно или нет.

Итак: вы ( за некоторыми очень специфическими исключениями, см. комментарии) потеряете качество, если откроете изображение в графическом редакторе и пересохраните его, даже если вы не вносили никаких правок. Но если вы откроете его только для отображения, а затем закроете вместо сохранения, то ничего не изменится.

Кстати: это только для традиционных программ редактирования изображений, таких как Photoshop. Такие программы, как Lightroom, которые «разрабатывают» RAW-файлы, используют другой подход (даже при работе с JPEG-файлами): они всегда сохраняют исходное изображение нетронутым и отдельно сохраняют выполненные шаги редактирования, которые применяются при экспорте окончательных результатов. Так что с такими программами можно не беспокоиться о потере качества (то есть более одного раза). Но тогда вам все равно не следует использовать для них исходные файлы JPEG.

«Вы потеряете качество… даже если не вносили никаких правок». Это зависит от приложения. Приложение может хорошо знать, что никаких изменений не производилось, и переписать исходную сжатую схему без дополнительной потери качества по сравнению с исходным JPEG.
Да, или если эта программа по умолчанию использует максимальное качество JPEG (читай: по крайней мере такое же хорошее, как исходное качество), и ни одно из изменений не оказывает достаточного влияния на изображение, чтобы вызвать чистую потерю качества из-за повторного сжатия (загрузка идеально сжатого JPEG и повторная прогонка через компрессор не ухудшает качество волшебным образом).
@DocMax: теоретически возможно, но знаете ли вы приложение, которое определенно делает это?
@LightnessRacesinOrbit: я уверен, что вы ошибаетесь. Преобразование данных из частотной области в исходную и обратно может каждый раз добавлять дополнительные ошибки из-за квантования. Может быть, в конце концов он и сойдется к какому-то устойчивому состоянию, но я в этом сомневаюсь.
@MichaelBorgwardt: Я признаю, что делаю какую-то сомнительную гипотезу, надеясь, что здесь играет роль конвергенция. Хотя я действительно не понимаю, почему этого не может быть; это, конечно, не совсем невозможно в очень общем случае сжатия с потерями.
@MichaelBorgwardt jpegtranможно использовать для обрезки или поворота JPEG без потерь, среди других различных преобразований. Я часто использую его для дальнейшего уменьшения размера файла и/или удаления ненужных данных, таких как данные EXIF, комментарии и т. д.:jpegtran -optimize -copy none -perfect -v input.jpg > output.jpg
Некоторые программы даже не позволяют сохранять (или буквально ничего не делать), если только открытый проект не загрязнен (вы внесли изменения). Вы всегда можете сохранить как... чтобы сделать копию.
@LordNeckbeard jpegtranделает что-то совершенно отличное от того, что делает редактор изображений.
@Rawling Почему это различие имеет значение? Упоминание об этом имело отношение к обсуждению.
@MichaelBorgwardt Я провел тесты с imagemagick, и он действительно сходится после нескольких сохранений. Здесь есть примеры по другому вопросу... Я найду его позже....
Здесь: photo.stackexchange.com/a/34192 в моих примерах сходились за 8 или 9 тактов.
@mattdm: в качестве контрпримера, наш собственный Джефф Этвуд после 10 циклов получал все более плохие результаты: blog.codinghorror.com/… - так что я думаю, это также зависит от конкретного изображения.
@LordNeckbeard jpegtranнамеренно не «знает, что не было внесено никаких изменений, и переписывает исходную сжатую схему без дополнительной потери качества», он просто никогда не использует сжатие с потерями .
@DocMax: для этого потребуется либо 1) приложение хранит в памяти (или перечитывает) сжатый поток, либо 2) оно фактически не перезаписывает файл JPEG, оставляя его неповрежденным (включая метку времени, если она есть). Очень маловероятные сценарии
Я согласен с тем, что приложение редко сохраняет и переписывает сжатый поток как есть. Я видел его однажды, но это было много лет назад, когда память была дороже, чем сегодня. Моя точка зрения заключалась только в том, что выражение « утратит качество» подразумевает, что потери качества вообще нельзя избежать; У меня не было бы проблем с «почти наверняка потеряет качество».
Во-вторых, для программы jpeg вполне возможно распаковать редактирование и сохранить файл (с некоторыми ограничениями) без дальнейшей потери качества. DCT может быть выполнен с достаточной точностью, чтобы полностью восстановить данные о частоте, которые были сохранены в исходном формате jpeg (это не проблема), и кодировщик может выбрать квантование данных по своему усмотрению. Он всегда может выбрать квантование, которое не ограничивает точность больше, чем оно уже было, если захочет. Существуют ли настоящие кодировщики, которые делают это, конечно, другой вопрос, это выполнимо в спецификации.
@TimSeguine: «Он всегда может выбрать квантование, которое не ограничивает точность больше, чем уже было, если захочет» - возможно ли это на самом деле, учитывая ограниченную точность ваших числовых типов?
@Майкл Боргвардт да. Если это было возможно для первого энкодера, то возможно и для второго.
@TimSeguine - это основано на предположении, что точные исходные данные были восстановлены из первого кодирования, что, учитывая характер кодирования с потерями, означает, что даже в идеальных / лабораторных условиях это маловероятно.
@JamesSnell Можно вычислить DCT и обратное DCT с произвольно высокой точностью. Это все, что необходимо. Период. Это не особенно сложно даже на практике. JPEG имеет потери только из-за шага квантования. Если мы оставим это и создадим хорошую подпрограмму DCT, то мы сможем делать с данными множество вещей без дальнейшего снижения качества, включая обрезку, поворот на 90 градусов и отражение. Это не просто теоретическая возможность, существует программное обеспечение, которое это делает. В нелабораторных условиях. Я просто объясняю, как это возможно.
@TimSeguine: Нет. Программное обеспечение, о котором вы говорите, вообще не выполняет DCT или обратное DCT - оно просто перестраивает полностью сжатые данные, используя глубокие знания о формате и его симметрии.
@MichaelBorgwardt Вы волшебник? Ты можешь читать мои мысли? Я никогда не упоминал конкретную программу. Меня также не волнует, как реализуется программа, о которой я не говорил.
@TimSeguine: о каком программном обеспечении вы тогда говорили? Потому что я очень сомневаюсь, что кто-либо, обладающий необходимыми навыками, будет использовать такой абсурдно расточительный и неэффективный метод для получения того же результата.
@MichaelBorgwardt Это не расточительно, если оно более общее. Дело в том, что (при условии, что у вас есть высококачественный алгоритм DCT) вы можете практически что угодно делать с jpeg, не влияя на его качество, если вы пропустите шаг квантования при его повторном сохранении. Это явно покупает вас больше. Вы не можете добиться большего успеха, чем любой другой, кто просматривает оригинал, но вам и не нужно делать хуже. Просто будьте осторожны и не квантизируйте.
@TimSeguine - Если вы не согласны с этим ответом, вам пора разобрать ссылки. И если вы хотите обсудить это, вам лучше всего перенести это в чат.
@JamesSnell Вы абсолютно правы. Я просто не уверен, что мне стоит тратить чье-то время на то, чтобы продолжать быть педантичным в отношении ответа, который дает правильный совет ОП.

Точно нет. Вам нужно отредактировать файл и повторно сохранить его как JPEG, чтобы усилить эффекты сжатия изображения. Простой просмотр не имеет никакого эффекта — если бы это было так, все JPEG-файлы в Интернете полностью «износились» максимум за день или два.

К вашему сведению, вот пример руководства, которое меня сбивает с толку (это с веб-сайта фотоблога): «Каковы недостатки съемки в формате .JPEG? Он имеет схему сжатия, которая приводит к ухудшению качества изображения при каждом открытии и сохранении файла. Деградация незначительна. Сначала вы, вероятно, этого не заметите. Но со временем вы это заметите».
@markthomas: ключевое слово сохранено - сохранение - это совсем другое, чем закрытие.
+1 за "износ"... Google нужно каждые пару секунд наносить новые слои "краски" на страницу результатов поиска!
@MichaelBorgwardt Действительно, но это может быть неправильно понято как «каждый раз, когда файл открывается и каждый раз, когда файл сохраняется». Конечно, у вас было бы гораздо больше деградации, если бы вы сохранили, не открывая сначала, но я все еще не думаю, что об открытии нужно было упоминать.

Сжатие JPEG можно описать как имеющее две отдельные фазы: сначала фазу с потерями, а затем фазу без потерь. Понимание разницы между ними важно для этого вопроса. Это не столько потому, что помогает понять, что происходит, сколько потому, что помогает понять, откуда берутся распространенные ошибки.

Сжатие с потерями происходит только при сохранении файла . Это та часть, которая вызывает потерю качества. Однако простого закрытия файла недостаточно для запуска сжатия с потерями: его необходимо сохранить . Некоторые редакторы могут отказаться сохранять файлы JPEG, которые не были отредактированы, чтобы избежать случайного запуска сжатия без потерь, но я не знаю, действительно ли какие-либо редакторы делают это.

Сжатие без потерь также происходит только при сохранении файла . Основное отличие в том, что даже если бы это произошло, когда файл был закрыт без сохранения, это не имело бы значения, потому что это без потерь. JPEG использует оба метода вместе.

Распаковка без потерь происходит всякий раз, когда файл открывается, но не в любое другое время . Ни при закрытии, ни даже при сохранении. Как и в случае декомпрессии без потерь, не имеет значения, даже если это произойдет в это время, потому что это без потерь.

«Декомпрессия с потерями» никогда не происходит. Нет такого . Не может быть, потому что данные, которые были выброшены на этапе сжатия с потерями, исчезли. Если бы вы могли каким-то образом восстановить его, то у вас был бы алгоритм сжатия без потерь, а не с потерями. Я даже упомянул концепцию только потому, что, упомянув два типа сжатия, было бы странно, если бы я упомянул только один тип декомпрессии, не объясняя почему.

Обратите внимание, что при сохранении файла запускаются оба типа сжатия . Обойти это не так уж и сложно, если только вы не знаете, что изображение не редактировалось, но тогда и сохранять его особого смысла нет. Также обратите внимание, что простое закрытие файла без сохранения не запускает ни одну из фаз , даже «безопасное» сжатие без потерь. По этой причине простое открытие и закрытие файла не может снизить качество изображения .

Что касается «нет смысла сохранять». Я беспокоился о том, что будет делать программа, если я просто отредактирую метаданные (комментарий, заметки), когда пользовательский интерфейс «Открыть-редактировать-сохранить» и нет специального указания на то, что данные изображения копируются но не пересжатый.
«Распаковка с потерями» как концепция имеет смысл, хотя я не знаю ничего, что ее реализует. Сжатый файл содержит определенное количество данных; можно представить себе алгоритм декомпрессии, который извлекает только версию этих данных с низким разрешением. Это может быть намного быстрее, чем извлечение всех доступных данных, и такой алгоритм можно использовать, например, для предварительного просмотра. (Например, JPEG сжимает изображение как последовательность блоков 8x8; вы можете извлечь средний цвет каждого блока и визуализировать его как один пиксель для предварительного просмотра размером 1/8.)
@jdlugosz Программы, которые только обновляют метаданные, как правило, не распаковывают / повторно сжимают часть изображения JPG. Они просто копируют эту часть как есть в новый файл. Файловый формат JPG построен таким образом, что на самом деле это проще и меньше работы, если вам нужно только обновить метаданные. Но все зависит от софта. Если это глупо в том, как он это делает, нет никакого способа обойти это (кроме использования другого программного обеспечения).
@DavidRicherby Существует множество программ, которые используют механизм декомпрессии для предварительного просмотра и тому подобного. Большинство веб-фотоальбомов делают это для создания эскизов и отправки версии с низким разрешением в браузер с небольшим дисплеем. В MacOSX это делают миниатюры в Finder и iPhoto. Я подозреваю, что миниатюры в проводнике в Windows тоже делают это, но я не уверен в этом.
На самом деле, AIUI, как сжатие, так и распаковка JPEG могут быть (несколько) с потерями. То есть вы не можете точно реконструировать исходное изображение из сжатых данных, и вы не можете (всегда) точно реконструировать сжатые данные из распакованного изображения. В основном, насколько мне известно, это может произойти из-за отсечения: при отображении сжатых коэффициентов YUV DCT обратно в 8-битные цвета пикселей RGB некоторые пиксели могут иметь значения цвета меньше 0 или больше 255, которые будут обрезаны.
@DavidRicherby: Насколько я понимаю, каждая точка в файле JPEG представляет собой сумму различных значений, умноженных на разные коэффициенты масштабирования; хотя значение обычно преобразуется в значение с 8 битами для красного, зеленого и синего, значения точек определяются более точно. Если бы кто-то сжал изображение в формате JPEG, которое точно соответствовало бы неокругленному результату распаковки JPEG, повторное сжатие с теми же настройками, что и у более раннего изображения, дало бы тот же результат, что и предыдущее сжатие, но округление, которое происходит в процессе распаковки, нарушает это.
Многие программы могут выполнять вращение без потерь, вращая блоки DCT без их распаковки, что позволяет избежать этапа сжатия с потерями. Таким образом, вы не можете сказать, что «сохранение файла вызывает оба типа сжатия», даже если в большинстве случаев это правда.

Простое открытие и закрытие файла JPEG не должно вызывать команду сохранения (в любой известной мне программе), и поэтому повторное сжатие не происходит.

Что происходит в тех случаях, когда вы действительно нажимаете «Сохранить», зависит от того, какие изменения вы внесли, и от того, насколько умна рассматриваемая программа обработки изображений.

Пользователь CutNGlass уже упомянул пример интеллектуальной программы обработки изображений «Better JPEG», которая использует тот факт, что изображения JPEG состоят из множества независимо закодированных прямоугольных блоков пикселей, и только те блоки, которые действительно НЕОБХОДИМЫ, переделываются. -сжато при сохранении изображения. Например, с помощью такой программы можно убрать эффект красных глаз, а при сохранении изображения в формате JPEG повторно сжимаются только те блоки, на которые повлияло изменение. http://www.betterjpeg.com/features.htm

Теперь этот метод, позволяющий избежать повторного сжатия любой части изображения JPEG, которая не нуждается в повторном сжатии, действительно «старая новость» (я не эксперт, и я знаю это более десяти лет), поэтому я считаю само собой разумеющимся, что все хорошие программы обработки изображений к настоящему времени прекрасно справятся с этим (что означает, что обычно не будет никакого повторного сжатия, если просто открыть изображение JPEG и нажать «сохранить», потому что программа будет знать, что никакие блоки не были изменены, и просто оставит их нетронутыми), но, глядя на этот вопрос и его различные ответы, я могу только сделать вывод, что это ВСЕ ЕЩЕ неверно! *Возможно, программирование, стоящее за такими решениями, сложнее, чем я думаю, иначе все программы, работающие с JPEG, имели бы это много лет назад!*

Привет новый пользователь. Спасибо за участие, включение ссылки на betterjpeg является полезным дополнением. С точки зрения разработчика ситуация такова, что мы бы назвали крайним случаем — чтобы быть полезным, она зависит от того, что пользователь делает частичное редактирование И хочет точно такие же настройки качества вывода, И исходный файл является одним из нескольких вариантов кодирования JPEG. . Для объема работы не достаточно выгоды.
Привет @JamesSnell! Прежде всего, я действительно ценю ваши отзывы и объяснения, почему все программы обработки изображений не делают все возможное, чтобы по возможности избежать деградации файлов JPEG. Тем не менее, я должен сказать, что это довольно субъективно, слишком ли много усилий прилагается к программированию, и представляет ли вариант использования «крайние крайние случаи» или нет! Это зависит от того, сколько форматов изображений обрабатывает программа и насколько распространено использование JPEG, и это зависит от того, насколько вы любите никогда не терять ничего, что вам не нужно терять (в данном случае ненужная потеря качества изображения) .
Кроме того, я бы сказал, что, поскольку JPEG является форматом изображения № 1 в мире (наиболее часто используемым), это само по себе делает его чем-то иным, чем «экстремальный крайний случай» (по крайней мере, слово «экстремальный» должно быть удалено ). Если вы также учтете тот факт, что этот метод обработки блоков, если он реализован в программе обработки изображений, может использоваться для множества различных ситуаций (частичное редактирование, например удаление эффекта красных глаз, вращение/переворот изображения, обрезка), то также указывает на нечто иное, чем «крайний крайний случай». Возможно, это не САМАЯ востребованная функция, но в то же время я уверен, что она будет оценена по достоинству!
Карл, я согласен с @JamesSnell в том, что это крайний случай, и я работал над популярным редактором изображений, поэтому у меня есть некоторый опыт. Когда вы открываете файл, он копируется в несжатую версию в памяти для редактирования , а оригинал немедленно удаляется . Это экономит память и дает вам возможность использовать любой формат файла в качестве источника. Я видел программное обеспечение, которое может выполнять переворот или поворот JPEG без потерь, но это очень специализированная функция. Программа, на которую вы ссылаетесь, является единственным редактором, который я когда-либо видел, который расширяет эту функцию до общего редактирования.
Спасибо за взвешивание, Марк, и спасибо за понимание. Однако я бы все же не назвал это «пограничным случаем», поскольку мы говорим об очень распространенных типах редактирования с использованием самого распространенного в мире типа файла изображения... Программисты хотят, чтобы это было просто, и, возможно, им все равно. о деградации изображения, чтобы он чувствовал себя «стоящим» для них, чтобы справиться с этим, является объяснением того, почему большинство программ обработки изображений не справляются с этим, но это не делает его «пограничным случаем». Файл JPEG обычно намного меньше, чем несжатая версия, поэтому его можно хранить в памяти и добавлять эту функциональность.

Вы определенно не потеряете качество, просто просмотрев его. Но, как указывалось выше, вы можете потерять качество изображения при его сохранении без внесения изменений , если редактор сжимает его при сохранении файла . Например, предположим, что у вас есть JPEG без сжатия:

  1. Вы открываете его в GIMP, ничего не меняете и сохраняете.
  2. GIMP спрашивает, какое сжатие вы хотите (качество).
  3. Вы вводите качество 90% (по умолчанию)

Сделайте это 20 раз, и вы увидите значительное снижение качества, потому что он был сжат 20 раз. Если вы сохраните его без сжатия (100% качество), вы не увидите никаких изменений.

JPEG всегда имеет сжатие; в JPEG нет такого понятия, как «без сжатия». Это по своей сути с потерями. Однако прохождение изображения [сжатого JPEG] через компрессор JPEG со 100% качеством может не привести к потере качества.
Многократное повторное сжатие изображения JPEG с тем же качеством не приведет к его ухудшению.
@геометрический Правда?
@geometrikal определенно не тот случай
Пример потери качества при повторном сохранении с тем же уровнем качества: photo.stackexchange.com/a/34192
Учтите также, что 100% качество — это не отсутствие сжатия.
Даже без сжатия у вас все еще есть преобразование цветового пространства (обычно между RGB и YCrCb, которое будет подвержено ошибке квантования.

Определенно, как и любой файл, если вы не нажмете «сохранить», а просто закроете файл, никаких изменений не будет. (подумайте об этом как о слове Doc, которое вы просто открываете и закрываете)

Если вы внесете изменения, большинство программ предоставят вам уведомление с вопросом, хотите ли вы «сохранить изменения».

Так что однозначно нет на ваш вопрос.

Надеюсь, это поможет.

Проще говоря:

  • Открытие: без потери качества
  • Копирование: без потери качества
  • Отображение: без потери качества
  • Сохранение без правок: копирование без потери качества*
  • Сохранение только с правками метаданных: без потери качества*
  • Сохранение с изменением качества сжатия: потеря качества
  • Сохранение после редактирования данных изображения: потеря качества

* В зависимости от программы, плохо реализованные программы могут фактически повторно сжиматься, даже если они не нужны, что приводит к потере качества.

Декодирование любых цифровых данных происходит без потерь. Не существует ни одного цифрового формата, в котором простое декодирование и отображение изменяли бы данные.

Это только повторное сжатие данных изображения, которое потенциально может привести к потерям. Некоторые операции редактирования, которые на самом деле представляют собой просто редактирование метаданных, не должны приводить к потере качества, например вращение EXIF ​​без потерь.

Программа может сгенерировать файл, используя данные, дословно скопированные из частей изображения, которые не изменились, но создать новые сжатые данные для других частей. Мастер JPEG, например, позволяет выделять «важные» области JPEG и оставлять их как есть, в то же время агрессивно сжимая другие менее важные области изображения на различную величину.
Копирование файла (в Проводнике, Finder и т.п.) не приведет к потере качества. Открытие изображения, выполнение выбора всего, копирование, создание нового изображения из копии и последующее сохранение приведет к потере качества.
@supercat - замена блоков возможна только для определенных схем кодирования jpeg. Но опция выборочного качества (только в некоторых областях) может обеспечить интересную экономию места без серьезного ухудшения качества изображения в Интернете.
@JamesSnell: я использовал JPEG Wizard много лет назад; Я не смотрел, поддерживается ли и как он поддерживается или обновляется, но это может позволить большую экономию места в тех случаях, когда на изображении есть несколько мест, где необходима детализация, и много областей, где это не так. В некоторых случаях размытие всего, кроме основных объектов изображения, может улучшить эстетический вид изображения и в то же время уменьшить размер файла.

Проще говоря Нет .

Чтобы быть конкретным. При сохранении изображения в формате JPEG у вас есть некоторые потери, поскольку JPEG определяется как сжатие с потерями.

Изображение сжато с использованием кодирования Хаффмана, если я не ошибаюсь. Теперь, когда графический редактор открывает изображение, он не распаковывает изображение. Он просто декодирует сжатое изображение, чтобы на экране можно было показать, что в нем содержится.

Но когда вы вносите изменения и повторно сохраняете его, изображение повторно сжимается в новый jpeg с большей потерей данных. Программное обеспечение, такое как GIMP, спросит вас, какое качество вы хотите, поэтому вы можете выбрать 100%, чтобы сохранить существующее качество.

Теперь открытие и закрытие изображения без внесения каких-либо изменений никогда не повлияет на то, как оно хранится и какие данные будут потеряны. Открытие его для просмотра и последующее закрытие не вносит никаких изменений в файл. В любом случае (mp3, изображение, текстовый документ). Поскольку ничего не сохраняется, качество всегда остается неизменным.

Но, как говорилось в предыдущих ответах, если вы действительно беспокоитесь о потере данных, вы можете просто использовать другие форматы, такие как png или tiff.

Обратите внимание, что вы не сохраните существующее качество при повторном сохранении фотографии в GINMP с использованием значения 100 % «настройки процента качества». Он устанавливает только некоторые параметры, используемые кодировщиком, на максимально возможный уровень качества. Эти настройки не без потерь.
Без проблем. Подробнее об этом можно прочитать в этом вопросе .

Кажется, что даже в этих ответах много дезинформации.

JPEG — это стандарт блочного кодирования с потерями. Это код частотной области, который сжимается за счет представления более высокочастотных компонентов изображения с более низкой точностью. Размер блока 8x8 пикселей.

Чтобы закодировать изображение JPEG, вы берете каждый блок, выполняете 2-D DCT и записываете результат в виде зигзагообразного шаблона с меньшим и меньшим количеством битов, начиная с самой низкой частоты и заканчивая самой высокой. Профиль точности определяется одной переменной качества.

Если вы выполнили этот процесс в блоке один раз, вы можете декодировать и перекодировать столько раз, сколько хотите, без потери качества изображения (при условии, что вы всегда используете одну и ту же переменную качества). Это не преувеличение; процесс декодирования и перекодирования блока jpeg можно сделать совершенно без потерь, и любое достойное приложение для редактирования уже может это сделать.

Что это значит для человека, редактирующего изображение? Если вы откроете изображение и сохраните (перекодируете) его с тем же качеством изображения, потери качества не произойдет (ваше приложение для редактирования должно сообщить вам переменную качества, используемую для кодирования изображения). Если вы откроете изображение и отредактируете только его часть, единственные блоки, которые вообще изменятся, — это блоки 8x8, которые вы отредактировали. Все остальное будет точно так же.

Это так ? _
Я не исследовал тщательно, но я предполагаю, что ошибки округления делают это не совсем так.
Если программа использует ту же Q-матрицу, а вы меняете только изолированные области, то сводка @stevecox верна. Если используется одна и та же программа, одни и те же настройки ползунка должны давать одни и те же внутренние параметры. Обрезка слева/сверху может изменить выравнивание блока; общие изменения, такие как оттенок и яркость, затрагивают все, и любое из них может привести к ужасной деградации за пределами номинального качества сжатия. Если исходное сохранение было очень высокого качества, эффекты будут незначительными, но кумулятивными.
@mattdm, даже без преднамеренного округления высоких частот (квантования), информация о цвете цветов уменьшается в разрешении и применяется к полному разрешению b& w, и преобразование цветового пространства будет иметь обычную точность с плавающей запятой и округление до ближайшего целого числа. JPEG2000 решает эту проблему и имеет настоящие режимы без потерь.
-1 Только что провел быстрый эксперимент с Photoshop CC, и многократное открытие и сохранение изображения с точно такими же настройками каждый раз приводит к созданию другого файла по сравнению с оригиналом с использованием режима наложения «разница». Очевидно, Photoshop не «стоит своих денег». Я не могу говорить за других редакторов, но готов поспорить, что они такие же. Вы могли бы написать программу очень тщательно, чтобы избежать ошибок округления при постоянном распаковывании и повторном сжатии изображения, но в этом не было бы смысла - JPEG не является хорошим промежуточным форматом, точка.
@MattGrum, я только что провел такой же эксперимент с яшмой. Дифф был пуст после первого сжатия. Не могу сказать, как вы провели свой эксперимент, но эталонная реализация не приводит к дополнительной потере качества.
@SteveCox Я открыл изображение в Photoshop, сохранил его с качеством JPEG 7, открыл этот JPEG и сохранил его с качеством JPEG 7, а затем повторил 5 раз. Затем я сравнил первый JPEG с 5-м JPEG. То, что делает эталонная реализация, представляет только академический интерес, если все основные редакторы вызывают снижение качества.

Простой ответ: «Это зависит».

Есть ли разница, если:

Я открываю изображение в стандартном просмотрщике изображений и просто «закрываю» изображение?

Должен быть безопасным, поскольку зритель никогда не должен иметь возможности изменить изображение.

Я открываю изображение в редакторе Photoshop Elements и закрываю его там?

Не должен менять имидж.

Если я просто закрою изображение и пересохраню его?

Закрытие изображения не должно менять изображение. Повторное сохранение изображения, скорее всего, изменит его, в зависимости от используемых вами плагинов.

Одна из причин, по которой вы найдете так много разных ответов на вопрос «когда закрытие или сохранение JPEG приводит к снижению качества изображения, а когда нет?» заключается в том, что это зависит от очень многих разных вещей, в том числе: программного обеспечения, которое вы используете для редактирования изображения, подключаемых модулей, установленных в этом программном обеспечении, выполняет ли ваше программное обеспечение «автоматическое сохранение» и от настроек, которые вы используете при сохранении изображения в формате jpg! Собственно поэтому я и не редактирую исходные файлы.

Я не пользуюсь фотошопом, но для него доступен подключаемый модуль, который должен помочь решить конкретную проблему — избежать потери качества изображения при сохранении в формате jpeg: http://www.betterjpeg.com /jpeg-плагин.htm

Подключаемый модуль Better JPEG Lossless Resave для Adobe Photoshop и Adobe Photoshop Elements — это инструмент, предназначенный для предотвращения потерь при повторном сжатии при повторном сохранении отредактированных изображений JPEG в Photoshop. Плагин использует тот факт, что изображения JPEG состоят из нескольких небольших независимых блоков и не сжимает повторно неизмененные блоки.

Интересные наборы ответов. Но некоторые все же немного вводят в заблуждение. попробую обобщить.

Абсолютно нет

1) Открытие файла никак на него не влияет. Тоже закрываю. Не в программе просмотра или редактирования.

Есть вероятность, что вы просматриваете файл по-разному в разных программах, но это может быть связано с тем, как эта программа интерпретирует некоторую информацию, такую ​​​​как цветовой режим или цветовой профиль. Но этот процесс только читает его.

Есть вероятность небольших изменений

2) Выполнение операций без потерь, таких как поворот изображения. Обычно программы просто переупорядочивают данные файла jpg без анализа и повторного сжатия. Но я бы не стал палить руками за все программы, которые предполагают это делать.

Небольшие незаметные изменения

3) Открытие и сохранение с одинаковым сжатием в одной и той же программе.

Первое повторное сжатие выполняется при первом сохранении файла jpg. Если вы сохраните файл во второй раз с теми же настройками, первоначальная потеря данных уже выполнена, но небольшие изменения можно будет применить снова. Не в такой степени, как первый, но может быть заметно, делая это несколько раз. Но это зависит от программы.

Заметные изменения

4) Наиболее очевидным является повторное сохранение с другой настройкой сжатия.

Не только в «масштабе» того, что есть в программе, но и в используемом алгоритме. Это слишком технично, но есть как минимум два основных алгоритма сжатия 4:4:4 и 4:2:2.

Вы можете использовать «ползунок» в своей программе для максимального «качества», но если ваша программа использует 4: 2: 2, а оригинал был на 4: 4: 4, у вас будет значительная потеря данных.

Вот небольшой документ, который я сделал несколько лет назад, чтобы вы могли видеть, что означает эта потеря данных, он на испанском языке, но вы можете использовать переводчик Google: http://otake.com.mx/Apuntes/PruebasDeCompresion2/1-CompresionJpgProceso.htm

Полный беспорядок

5) Если открыть изображение и пересохранить его в программе с ограниченными возможностями. Например, вивер может сохранять только файлы RGB и не работать должным образом с файлами CMYK, или, возможно, он не понимает встроенный цветовой профиль. Вы можете полностью испортить изображение при сохранении.

6) Использование большого сжатия. Вы сохраняете его для своего веб-сайта и сжимаете. Не удаляйте свои оригиналы, пожалуйста!

Только на редактируемой части изображения

7) Рекомпрессия обычно выполняется на всем изображении, но как я уже упоминал в пункте 3, ее немного, если изображение не изменилось. Когда вы редактируете изображение, этот анализ должен быть сделан снова на этой отредактированной части.

Помните, что редактирование можно разделить на три группы.

а) Коррекция цвета, контраста и т. д.

б) Изменение одной части изображения (красные глаза, удаление человека, очистка нежелательных пятен)

в) Совершенно новый коллаж.

Так что в некоторых случаях изображение совершенно другое, по крайней мере, с точки зрения анализа и рекомпрессии.

В этом посте: https://photo.stackexchange.com/a/67434/37321 пользователь упомянул программу, которая делает очень умный анализ существующего сжатия и не сжимает его повторно, если в этом нет необходимости.

Да, это очевидно! Я просто сделаю это с образцом изображения и качеством JPEG 30, чтобы ускорить исходное изображение. (160 Кб)введите описание изображения здесь

Первый тур (10 Кб)введите описание изображения здесь

Второй тур (9Кб)введите описание изображения здесь

Таким образом, JPEG не снижает значительно качество изображения, если вы не изменяете размер или не меняете показатель качества. Изображение продолжит медленно ухудшаться, но незначительно. А теперь я удаляю всего 4 пикселя с изображения (столбец справа). И снова сохранить.введите описание изображения здесь

Значительное ухудшение. Чтобы объяснить это, нам нужно углубиться в алгоритм JPEG. В любом случае, если вы оказались в такой ситуации, имейте в виду – это еще не конец. Существует несколько отличных программ для удаления шума в формате JPEG, например супер-разрешение и улучшение изображения нейронной сети. Я загрузил последнее изображение (самое худшее) в этот сервис и вот что у меня получилось. Действительно хороший результат.введите описание изображения здесь

Каким софтом вы открываете и закрываете ? Вы уверены, что ваше программное обеспечение не сохраняет (и, следовательно, повторно сжимает) изображение, когда вы его закрываете?
Просто базовое пересохранение Photoshop
Поскольку вопрос касается нескольких разных ситуаций, этот ответ сбивает с толку, не проясняя этого.