Как я проверяю на поврежденные изображения в формате TIFF в C#?

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

5
задан paxdiablo 12 April 2010 в 12:03
поделиться

3 ответа

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

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

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

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

2
ответ дан 14 December 2019 в 01:04
поделиться

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

0
ответ дан 14 December 2019 в 01:04
поделиться

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

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

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

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

3
ответ дан 14 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: