Кто-нибудь знает, как читать перевод пикселей (сжатие пикселей)? - PullRequest
0 голосов
/ 22 июля 2010

Я пытаюсь прочитать файл TIFF, с которым связан файл ANN.Tiff не открывается со стандартными зрителями.Когда я открываю двоичный файл ANN, я могу только понять, что он был создан с помощью программного обеспечения от Pixel Translations Inc. в формате PIXTIFF.

Кто-нибудь знает, как я могу просмотреть этот файл вручнуюили программно?Есть ли какое-нибудь бесплатное программное обеспечение, которое я могу использовать в качестве средства просмотра?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 мая 2013

В интересах полного раскрытия я работаю в Atalasoft.

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

У компании были файлы, которые внутренне идентифицируются какбыть PIXTIFF.Конкретной присутствующей строкой были «Pixel Translations Inc., версия PIXTIFF» и номер версии.Однако эти файлы имели несколько сотен байтов до заголовка TIFF, что делало их невозможными для открытия в стандартных средствах просмотра.

Я нашел другой набор файлов, когда искал допустимые TIFF для ссылки с той же строкой PIXTIFF, которая былауже работающий tiff.Я не могу сказать, был ли кто-то уже «исправлен» или если нестандартный процесс создал набор, который имел эта компания.

Итак, если вы обнаружите, что у вас есть эти двоичные файлы PIXTIFF, сначала проверьте, недействительны, прежде чем продолжить.Сделайте копию, дайте ей расширение .tif и используйте что-то вроде IrfanView , чтобы попытаться открыть ее.

Просмотр спецификации заголовка Tiff : файлы Tiff начинаются с II* (0x49 0x49 0x2A 0x00) или MM * (0x4D 0x4D 0x2A 0x00), а затем смещение к первому каталогу изображений с начала файла.(Хотя в моем опыте порядок ММ с прямым порядком байтов редок.)

Указанные файлы можно было исправить, удалив все данные до заголовка tiff.Смещения были уже правильными относительно заголовка TIFF.

Я включил быстрый пример C # того, что я делал для этого локально.Это должно быть довольно просто, чтобы это произошло на выбранном вами языке.

Примечание: Stream.CopyTo доступен только в .Net 4.0 и более поздних версиях. Это также исправляет только одиниз двух возможных заголовков, но он исправил все файлы под рукой.

byte[] header = { 0x49, 0x49, 0x2A, 0x00 };
int found = 0;

string filename = @"fileToFix";

using (Stream fileToFix = File.OpenRead(filename))
{
    while (found < 4 && fileToFix.Position < fileToFix.Length)
    {
        if (header[found] == fileToFix.ReadByte())
            found++;
        else
            found = 0;
    }

    if (found != 4) //Didn't find a tiff.
        return;

    fileToFix.Seek(-4, SeekOrigin.Current); //We're already 4 bytes in the the header, go back.

    using (Stream fixedFile = File.OpenWrite(Path.Combine(Path.GetDirectoryName(filename), Path.GetFileNameWithoutExtension(filename) + ".fixed.tif"))) //Same directory, same name but ending in .fixed.tif.
        fileToFix.CopyTo(fixedFile);
}
0 голосов
/ 30 апреля 2011

Продукты обработки изображений Altalasoft могут читать (и создавать) эти файлы.

См .: http://www.atalasoft.com/

Кроме того, вы часто можете читать файлы TIFF со стандартным Windows Imaging SDK или даже со стандартными библиотеками GDI +. (Или, альтернативно, библиотеки .NET System.Windows.Drawing.)

Некоторые файлы TIF PIXTIFF имеют «тип 6» и используют сжатие JPEG. Я нашел лучшую библиотеку, которая будет читать их, это библиотека LibTiff (или версия .NET, LibTiff.net by BitMiracle: http://bitmiracle.com/libtiff/).

...