Без потерь манипулирование JPEG в C ++ - PullRequest
1 голос
/ 02 июня 2011

У меня есть файл JPEG на диске, что не совсем нормально - этот файл JPEG имеет дополнительные данные мусора, добавленные за End Of Image (FFD9). Этот файл JPEG все еще может быть открыт для просмотра JPEG.

Я хочу удалить эту дополнительную информацию за End Of Image (FFD9). Ограничения:

  1. Должно быть сделано программно
  2. Должно быть без потерь
  3. Должен использовать нативный код, например C ++

Один из способов, который я обнаружил, - это повторно сохранить файл с помощью инструмента командной строки IrfanView, используя команду без потерь JPG_TRANSFORM: / jpg_rotate. Дополнительные данные автоматически удаляются.

Однако, есть ли другой способ, которым я могу сделать это в коде C ++. Если это возможно, я не хочу использовать exes, такие как IrfanView, чтобы сделать это. Я хотел бы сделать все в коде, чтобы сохранить вещи.

Я подумываю определить конец файла (FFD9), а затем сохранить буфер перед EOF в другом JPEG. Но как сохранить буфер без потерь?

1 Ответ

3 голосов
/ 02 июня 2011

Я полагаю, что это вопрос об обработке файлов, а НЕ связанный с обработкой изображений.

Все, что вам нужно сделать, записать все данные до EOF в вашем файле изображения в результирующий файл изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...