Как проверить наличие поврежденных изображений TIFF в C #? - PullRequest
5 голосов
/ 12 апреля 2010

Я искал, как проверить, поврежден ли файл TIFF или нет.Большинство предлагает обернуть функцию Image.FromFile в блок try.Если он генерирует исключение OutOfMemoryException, он поврежден.Кто-нибудь использовал это?Это эффективно?Есть альтернативы?

Ответы [ 4 ]

4 голосов
/ 04 августа 2010

Пожалуйста, ознакомьтесь с бесплатной программой LibTiff .NET. Он имеет функцию, чтобы проверить, повреждена ли каждая страница в файле TIF или нет. Даже частично испорченный тоже не проблема

http://bitmiracle.com/libtiff/

Спасибо

3 голосов
/ 27 апреля 2010

Многие файлы TIFF не открываются в стандартном GDI + .NET. То есть, если вы работаете в Windows XP. Окно 7 намного лучше. Таким образом, любой файл, который не поддерживается GDI + (то есть факс, 16-битная серая шкала, 48-битный RGB, tiled tiff, piramidical tiled tiff и т. Д.), Тогда рассматривается как «поврежденный». И не только это: все, что приводит к растровому изображению размером более 100 МБ в 32-разрядной системе, также вызывает исключение нехватки памяти.

Если ваша цель - максимально поддерживать стандарт TIFF, пожалуйста, начните с LibTiff (производные). Я использовал LibTiff.NET от BitMiracle (LGPL), который работал хорошо для меня. Пожалуйста, смотрите мои другие сообщения

Многие утилиты TIFF также основаны на LibTIFF, некоторые из них портированы на C # .NET. Это было бы мое предложение, если вы хотите проверить TIFF.

Что касается спецификации TIFF, предложенной в других ответах: конечно, это дает вам контроль уровня битов. Но, по моему опыту, вам не нужно заходить так низко, чтобы иметь хорошую поддержку TIFF. Формат настолько универсален, что для начала поддержки с нуля вам понадобится огромное количество времени.

2 голосов
/ 12 апреля 2010

Он будет поврежден только в том случае, если методы фреймворка не смогут его открыть.

Существуют некоторые типы TIFF, которые каркас не может открыть - (в моем случае я не могу вспомнить точный, думаю, это был один из типов факсов ...)

Этого может быть достаточно для вас, если вы просто ищете использование фреймворка для работы с изображениями. В конце концов, я не могу открыть его, вы не можете его использовать ...

ImageMagic - может дать вам больше возможностей здесь

0 голосов
/ 12 апреля 2010

Не глядя на размолвку, может быть трудно увидеть, поврежден ли он с визуальной точки зрения, но если у вас есть проблемы с обработкой изображения, просто создайте функцию, которая выполняет базовый тест для этого типа обработки и обрабатывает ошибка?

...