Вы можете, но только если ваш просмотрщик JPEG поддерживает расширение SmartScale JPEG. jpegtran может сделать это для размеров N / 8, с N = 1..16. В основном, размер блока DCT изменяется от 8x8 до чего-то другого во время повторного сжатия (например, 4x4), что эффективно масштабирует изображение.
Примечание. SmartScale был представлен в 8-й версии библиотеки libjpeg, но он не получил широкой поддержки у зрителей.
Документ, подробно описывающий изменения, можно найти здесь: Evolution of JPEG .
РЕДАКТИРОВАТЬ: Кажется, что большинство зрителей не могут отображать эти изображения, так как они основаны на libjpeg-turbo. И libjpeg-turbo решила не реализовывать эту функцию . На самом деле, я пробовал довольно много программ (на Ubuntu 14.04 и Windows 8), и ни одна из них не смогла отобразить уменьшенное изображение, созданное с помощью jpegtrans. Даже Photoshop, IrfanView и GIMP не удалось.
РЕДАКТИРОВАТЬ 2: Фактически, Ubuntu и Fedora даже не поставляют библиотеку libjpeg8, но полностью заменяют ее версией libjpeg-turbo. Таким образом, ни одна из программ не сможет читать файлы JPEG SmartScale, за исключением нескольких двоичных файлов, которые статически связаны с исходной библиотекой libjpeg8.
Краткий ответ: нет. Изображение JPEG использует сжатие, что означает, что каждый выходной байт зависит от всех остальных. Если вы измените количество байтов изображения, то вы должны распаковать и повторно сжать.
В результате повторного сжатия произойдет потеря качества, поскольку JPEG использует сжатие с потерями, но вы все равно теряете качество, увеличивая разрешение на четверть. Вы можете получить максимально возможное качество изображения низкого разрешения, увеличив уровень качества JPEG при повторном сжатии, хотя это, конечно, увеличит размер файла.
Если вы много работаете с изображениями, лучше всего работать в формате сжатия без потерь, например PNG, с преобразованием в JPEG только после финализации изображений, при условии, конечно, что у вас есть дополнительное дисковое пространство.
источник