Ответ почти наверняка «да, вы можете, но это потребует больше усилий, чем вы хотите».
Изображение JPEG - это поток маркеров, которые содержат либо информацию, общую для всего сжатого изображения, либоинформация, связанная с определенными частями изображения.Сжатие работает, разбивая изображение на цветовые плоскости, возможно, изменяя цветовые пространства на одно, где информация о цвете может быть уменьшена, и в пределах каждой плоскости, работающей с блоками 8x8 пикселей.
Например, можноповернуть сжатое изображение на 90 градусов, если оно имеет такой размер, чтобы оно состояло только из целых блоков, путем транспонирования только базовых блоков и коэффициентов внутри каждого блока;т.е. без распаковки, вращения реального изображения и повторного сжатия.
Учитывая это, ваш подход будет заключаться в том, чтобы проанализировать поток маркеров на пути в библиотеку, передавая все глобальные для изображения маркеры, изменяя любыесвязанные с размером изображения и метками сброса, содержащими коэффициенты, которые находятся за пределами вашего прямоугольника обрезки.
Вам, вероятно, потребуется дополнительно обрезать результат, если ограничение обрезки до полных базовых блоков слишком грубое.
Что мне неясно, так это то, есть ли реальная победа над альтернативой, которая заключается в обрезке результатов по мере их выхода из библиотеки.Библиотека легко настраивается, поэтому вы можете предоставить функцию потребителя несжатых данных, которая отбрасывает все пиксели за пределами прямоугольника обрезки и сохраняет только те пиксели, которые вы хотите сохранить.