Кажется, что в этих ответах много дезинформации.
JPEG - это стандарт блочного кодирования с потерями. Это код в частотной области, который получает сжатие, представляя более высокочастотные компоненты изображения с меньшей точностью. Размер блока 8х8 пикселей.
Для кодирования изображения JPEG, которое вы берете в каждом блоке, выполните 2-D DCT и запишите результат в виде зигзагообразного шаблона с меньшим количеством битов, начиная с самой низкой частоты и заканчивая на самый высокий. Профиль точности определяется одной переменной качества.
Пока вы проделали этот процесс на блоке один раз, вы можете декодировать и перекодировать столько раз, сколько захотите, без потери качества изображения (при условии, что вы всегда используете одну и ту же переменную качества). Это не преувеличение; процесс декодирования и перекодирования блока jpeg может быть полностью выполнен без потерь, и любое полезное приложение для редактирования уже может это сделать.
Что это значит для человека, редактирующего изображение? Если вы откроете изображение и сохраните (перекодируете) его с тем же качеством изображения, то потери качества не будет (ваше приложение для редактирования должно иметь возможность сообщать вам переменную качества, используемую для кодирования изображения). Если вы откроете изображение и отредактируете только часть его, единственными блоками, которые вообще изменятся, являются отредактированные блоки 8x8. Все остальное будет точно таким же.