Обрезка большого JPEG - PullRequest
       10

Обрезка большого JPEG

0 голосов
/ 11 февраля 2012

Есть задача написать программу, которая будет обрезать JPEG файлы.Но проблема в том, что некоторые файлы JPEG имеют большие размеры - сотни мегабайт.Таким образом, вопрос: возможно ли обрезать файл JPEG, но без загрузки всего файла в ОЗУ, используя что-то вроде fseek () и декодируя только те части, которые были необходимы.

Возможно ли это?Если да, может быть, некоторые библиотеки делают то же самое.

Upd.Все это будет использовано для технологии глубокого увеличения.Так что, когда Deep Zoom попросит файл, эта программа выдаст его, но это должно быть в реальном времени

1 Ответ

5 голосов
/ 11 февраля 2012

Есть два способа сделать это.

Первый - это обрезка без потерь, когда вы не полностью декодируете файл, а работаете с блоками DCT 8x8. Вам нужно будет использовать библиотеку, которая имеет эту возможность, и она накладывает некоторые ограничения на способность обрезки. Вы не можете обрезать до границы, которая не находится в квадрате DCT, что ограничивает вас кратными 8 или 16 в зависимости от подвыборки в файле.

Второй способ - использовать библиотеку, которая позволяет вам читать и писать по одной строке за раз. Я знаю, что библиотека IJG может сделать это, и, вероятно, другие. Это простой способ, но недостатком является то, что изображение проходит через декомпрессию / повторную компрессию и теряет качество и / или становится больше.

...