2010-04-12 17 views
5

He buscado cómo comprobar si un archivo TIFF está dañado o no. La mayoría sugiere ajustar la función Image.FromFile en un bloque try. Si arroja una OutOfMemoryException, está corrupta. Alguien ha usado esto? ¿Es efectivo? Alguna alternativa?¿Cómo compruebo si hay imágenes TIFF corruptas en C#?

Respuesta

2

Solo estará dañado en el sentido de que los métodos de marcos no pueden abrirlo.

hay algunos tipos TIFF que el marco no puede abrir - (En mi caso no puedo recordar el exacto, creo que fue uno de los tipo de fax ...)

Eso puede ser suficiente para ti, si solo buscas un uso del marco para manipular imágenes. Después de todo lo que se puedo abrir, no puedes usarlo ...

ImageMagic - le puede dar más posibilidades aquí

0

sin mirar el tiff, puede ser difícil de ver si su corruptos desde una perspectiva visual , pero si tiene problemas con el procesamiento de una imagen, simplemente cree una función que realice una prueba básica para este tipo de procesamiento y maneje el error.

+0

suponiendo que no desea validar el contenido real de los archivos a su estricta especificación ... –

3

Muchos archivos tiff no se abrirán en el estándar GDI + .NET. Es decir, si está ejecutando en Windows XP. La ventana 7 es mucho mejor. Por lo tanto, cualquier archivo que no sea compatible con GDI + (es decir, fax, escala de grises de 16 bits, 48bpp RGB, tiff con teselas, tiff con mosaico piramidal, etc.) se considera 'corrupto'. Y no solo eso, cualquier cosa que resulte en un mapa de bits de unos 100 MByte en un sistema de 32 bits también causará una excepción de falta de memoria.

Si su objetivo es apoyar tanto como sea posible el estándar TIFF, comience por LibTiff (derivados). He usado LibTiff.NET de BitMiracle (LGPL), que funcionó bien para mí. Por favor vea mi otro posts

Muchas de las utilidades TIFF también se basan en LibTIFF, algunas de ellas están portadas a C# .NET. Esta sería mi sugerencia si quiere validar el TIFF.

En cuanto a la especificación TIFF sugerida en otras respuestas: por supuesto, esto le da control a nivel de bit. Pero, para mi experiencia, no necesitarás ir tan bajo para tener un buen soporte TIFF. El formato es tan versátil que le costará una enorme cantidad de tiempo comenzar con soporte desde cero.

4

Por favor, eche un vistazo al freeware llamado LibTiff .NET. Tiene la función de verificar si cada página en un archivo TIF está dañada o no. Aunque sea parcialmente corrupta también no hay problema

http://bitmiracle.com/libtiff/

Gracias

Cuestiones relacionadas