Составьте несколько файлов JPEG без повторного сжатия - PullRequest
2 голосов
/ 05 февраля 2010

Как мне составить (присоединить) несколько файлов JPEG без повторного сжатия?

Я знаю, что есть jpegtran , который может без потерь обрезать и изменять размер изображений JPEG, поэтому мне интересно, есть ли подобный инструмент , чтобы присоединять изображения без потерь ?

Их размер - это кратный блок 1 микроконтроллера (16 пикселей в обоих направлениях).

Ответы [ 2 ]

1 голос
/ 23 апреля 2011

То, что вы хотите сделать, безусловно, возможно, но для того, чтобы оно было действительно без потерь, оба изображения должны использовать те же таблицы квантования и опцию цветовой подвыборки. Если, например, 2 изображения получены из одного и того же источника (например, камеры), то вы можете быть уверены, что это будет возможно. Вам нужно будет энтропийно декодировать каждый MCU в обоих изображениях, переставлять их так, как вы хотите, а затем повторно энтропийно кодировать их и выводить битовый поток JPEG. Если вы хотите наложить один на другой или обрезать / объединить их на границах, отличных от MCU, то вы столкнетесь с той же проблемой, что и выше, и должны выполнить полное декодирование и перекодирование.

1 голос
/ 05 февраля 2010

Я использовал композитный файл в ImageMagick для создания водяных знаков в формате JPG с изображением PNG.

Как это:

composite -tile -dissolve 15 targetimage.jpg watermark.png

Очевидно, что вы можете использовать два JPEG для достижения того, что вы ищете.

Использование аргументов -quality и -sampling-factor поможет сохранить качество. Существует также аргумент -compress <type>, где тип может быть равен Lossless. Однако ImageMagick не рекомендует использовать это значение, поскольку библиотека JPEG должна быть исправлена ​​для поддержки этого.

Стоит, однако, выяснить, удастся ли получить подлинное изображение без потерь, и вас не устраивает качество аргументов compress и sampling-factor.

...