Извлечь JPEG из файла TIFF

Справочная информация У меня есть большой файл TIFF, сжатый с помощью JPEG (новый, сжатие 7 в стандарте TIFF) и выложенный плиткой. Что мне нужно сделать, так это извлечь эти плитки в отдельные файлы .jpg. Мне нужно иметь возможность сделать это без распаковки / повторного сжатия данных изображения, потому что это потребует слишком много вычислительных ресурсов, поэтому обо всех библиотеках, о которых я знаю, не может быть и речи.

Я много знаю о файловой структуре TIFF, но почти ничего о файловой структуре JPEG.У меня есть код, написанный прямо сейчас, который считывает данные тега JPEGTable из заголовка tiff в массив байтов (это означает, что он переходит к смещению, на которое указывает тег, и читает его там) И еще одно рекламное объявление кода, которое считывает целевой фрагмент в байт множество. Затем я записываю байтовый массив Table в новый файл, а затем записываю байтовый массив Tile в этот файл. Последние 2 байта массива Table я записываю с 0xFF, 0xFF и то же самое для первых 2 байтов массива Tile , потому что я обнаружил, что оба массива начинаются и заканчиваются на последовательности SOI и EOI в формате jpeg соответственно, и если бы у меня было более одной последовательности каждой, файлы не могли бы открываться никакими программами обработки изображений.

For i as Integer = 0 to TableArray.Count-3
    stream.WriteByte(TableArray(i))
Next
stream.WriteByte(255)
stream.WriteByte(255)
stream.WriteByte(255)
stream.WriteByte(255)
For i as Integer = 2 to TileArray.Count-1
    stream.WriteByte(TileArray(i))
Next
stream.Close()

Проблема Вот где я сейчас нахожусь, проблема в том, что все мои извлеченные плитки окрашены в розовый цвет, а должны быть белыми, почти как цветной негатив. Это не сплошной розовый цвет, я вижу контуры объектов, которые, как я знаю, находятся на исходном изображении. Есть ли у кого-нибудь идеи, как я могу это решить? Кроме того, я делаю это в VB.NET, но я не думаю, что язык действительно имеет значение в этом случае, поскольку это больше похоже на проблему концепции / алгоритма / файловой структуры, которую я делаю неправильно.

Если кто-то хочет, чтобы я опубликовал часть кода, который я использую, я могу, просто нужно знать, какую часть. Extracted Original

РЕДАКТИРОВАТЬ: В технических примечаниях Adobe Photoshop TIFF от 22 марта 2002 г. я нашел раздел, в котором говорится:

Преобразование из TIFF в формат обмена JPEG является более сложным.Файл TIFF / JPEG на основе полос можно довольно легко преобразовать, если все полосы используют одинаковые таблицы JPEG и не используют маркеры RSTn: просто удалите накладные маркеры и вставьте маркеры RSTn между полосами. Преобразование мозаичных изображений сложнее, поскольку данные обычно не будут располагаться в правильном порядке (если только плитки не имеют высоту только в один MCU). Это все еще можно сделать без потерь, но это потребует отмены и повторения энтропийного кодирования , чтобы можно было обновить различия коэффициентов DC.

Не уверен, имеет ли это отношение к моей проблеме.

6
задан keepitreall89 5 January 2012 в 22:16
поделиться