Русский

Изображения и фотографии · Редактор изображений и рисунков в браузере

Обрезка JPEG без потерь против обрезки браузера: почему происходит перекодирование

· Фон

редактирование изображений холст обработка браузера

Абстрактная растровая иллюстрация для обрезки JPEG без потерь и обрезки браузера: почему происходит перекодирование
Оригинальная векторная иллюстрация ToolAcre

Инструменты командной строки могут обрезать JPEG без его декодирования, но только по сетке пикселей 8 или 16; Вместо этого редакторы браузера декодируют и перекодируют. В этом посте объясняется, почему существуют оба подхода и как ограничить потерю качества при необходимости перекодирования.

Две обрезки, два размера файла — один и тот же прямоугольник, разрезанный в два раза, дает разные файлы, и причина в самом формате JPEG

Две обрезки JPEG могут иметь одинаковые размеры и по-прежнему создавать разные последовательности байтов. Прямоугольник может быть идентичным, хотя кодер записывает разные таблицы, заголовки, квантованные значения или метаданные. Ключевое различие заключается в выбранном пути. Утилита JPEG без потерь иногда может переупорядочивать сжатые блоки, тогда как этот редактор декодирует изображение, копирует пиксели в его растровые слои и просит canvas.toBlob закодировать новый файл.

Проверьте это различие с помощью дубликата, а не незаменимого сканирования. Обрежьте прямоугольник, экспортируйте его и сравните размеры, видимые края и измеренный размер капли. качество JPEG передается кодировщику браузера; PNG не получает аргументов качества с потерями, а WebP следует собственному кодеку браузера. Загрузка представляет собой новую кодировку, а не исходный сжатый поток с удаленным углом.

Как организован JPEG — 8×8 блоков, минимальные кодируемые единицы и почему сетка важна для резки

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

Инструмент обрезки редактора думает в исходном прямоугольнике над декодированными пикселями. Таким образом, он может представлять собой произвольный выбор, в том числе тот, который находится между границами блока JPEG, но источник не предоставляет элементы управления подвыборкой, выравнивание блоков или сохранение на уровне байтов. Результатом является удобная геометрическая свобода за счет возврата к кодировщику после отрисовки пикселей.

Структура блока JPEG является фоновым контекстом; этот редактор не анализирует и не обрезает сжатые блоки

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

Без потерь не означает произвольно. Инструменты с выравниванием по блоку могут ограничивать прямоугольник обрезки, а обработка метаданных по-прежнему требует собственной проверки. Редактор делает другой выбор: он предоставляет пользователю свободный прямоугольник на декодированном изображении, копирует этот прямоугольник на холсты новых слоев и позже кодирует результат. Используйте специальную утилиту JPEG, если требуется сохранение байтов или архивирование на уровне блоков.

Обрезка JPEG без потерь выходит за рамки этой реализации и требует другого инструмента.

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

При экспорте сеанса canvas.toBlob запрашивает у браузера новый файл PNG, JPEG или WebP. Для загрузки JPEG это перекодирование браузером декодированного и отредактированного растра. Источник не обеспечивает выравнивание минимальной кодированной единицы, копирование коэффициентов, выбор подвыборки или гарантию метаданных и профилей. Поведение представляет собой преднамеренное редактирование растра, а не обрезку блоков без потерь.

Обрезка браузера декодирует пиксели, копирует прямоугольник и повторно кодирует композицию.

Однократное перекодирование может быть приемлемым для веб-изображения, но его стоимость зависит от источника, обрезки, кодировщика браузера, выбранного качества и контента. Мелкий текст, полутоновые сканы, четкие линии и повторяющиеся контрастные края могут обнаружить изменения раньше, чем обычная фотография. Избегайте назначения фиксированного процента потери или гарантированного уменьшения размера файла: репозиторий не дает таких обещаний.

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

Последствия перекодирования зависят от кодировщика; фиксированный размер или процент качества не обещаны

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

Утилита с поддержкой блоков без потерь будет отдельным экспериментом: она может принимать только выровненные края и избегать декодирования страницы, в то время как обрезка браузера принимает нарисованный вами прямоугольник. Не сравнивайте их, как будто у них одинаковая гарантия. Здесь canvas.toBlob создает новый файл, и источник не обещает идентичности байтов, сохранения метаданных, сохранения профиля или фиксированной стоимости качества.

Сработала проверка: сравнивайте размеры и видимые детали, не ожидая сохранения байтов

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

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

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

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

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