Pregunta

Me gustaría encontrar la altura, la anchura de una imagen en el disco sin necesidad de abrirlo, si es posible (por razones de rendimiento).

Las propiedades de Windows panel de imágenes contiene información como la anchura, altura, profundidad de bits, etc., lo que me lleva a creer que es el almacenamiento de los metadatos en el archivo en algún lugar.¿Cómo puedo acceder a esta información?

¿Fue útil?

Solución

Hay algunos stackoverflow preguntas sobre cómo leer la información EXIF de las imágenes, tales como: Cómo obtener los datos EXIF de un archivo usando C#

Otros consejos

Uso de clase System.Drawing.Image.

        Image img = Image.FromFile(fileName);
        ImageFormat format = img.RawFormat;
        Console.WriteLine("Image Type : "+format.ToString());
        Console.WriteLine("Image width : "+img.Width);
        Console.WriteLine("Image height : "+img.Height);
        Console.WriteLine("Image resolution : "+(img.VerticalResolution*img.HorizontalResolution));

        Console.WriteLine("Image Pixel depth : "+Image.GetPixelFormatSize(img.PixelFormat));
        Console.WriteLine("Image Creation Date : "+creation.ToString("yyyy-MM-dd"));
        Console.WriteLine("Image Creation Time : "+creation.ToString("hh:mm:ss"));
        Console.WriteLine("Image Modification Date : "+modify.ToString("yyyy-MM-dd"));
        Console.WriteLine("Image Modification Time : "+modify.ToString("hh:mm:ss"));

La forma más sencilla de lograr esto es, suponiendo que la imagen es cuadrada es tomar el tamaño del archivo en bytes y tomar la raíz cuadrada.Esta será su anchura y altura.

256 bytes = 16px x 16px

:-)

O, usted puede intentar la lectura de la imagen EXIF de información valiéndose para ello de codeplex biblioteca

Windows no almacena (este) metadatos en cualquier lugar especial en el sistema de archivos; la ventana Propiedades simplemente lee de la imagen del archivo en sí.

No creo .NET ofrece ninguna función para leer solo los metadatos de una imagen sin tener que cargar toda la imagen. Si usted está tratando con sólo un número limitado de diferentes formatos de imagen (por ejemplo, sólo los formatos JPEG, PNG y GIF), no debería ser demasiado difícil de leer el tamaño de la imagen de cabecera a sí mismo.

Si, por el contrario, usted tiene que tratar con muchos formatos de imagen, tal vez usted puede tener un vistazo al código fuente de la Unix file utilidad. Se las arregla para detectar el tamaño de muchos, muchos diferentes formatos de imagen, y es increíblemente rápido para arrancar.

Con el fin de obtener el ancho y la altura de una imagen (en esencia, como usted dice, los metadatos) se quiere Have a abrir el archivo, análisis sintáctico algún tipo de información de cabecera y obtener lo que quiera de esa manera.

Usted no tiene que leer toda la información de color / mapa de bits, sólo el encabezado.

Esta es la misma forma en que Windows es capaz de cargar los iconos de archivos de la aplicación sin tener que ejecutarlas.

Para leer las propiedades mostradas por el Explorador de Windows puede utilizar los Controles de Microsoft Shell y Automatización componente. La ventaja de esto es que usted no necesita ninguna biblioteca de terceros (el objeto COM ya está ahí) o código adicional para analizar la cabecera de imagen y que va a trabajar con una variedad de formatos.

El código de ejemplo se puede encontrar en una respuesta a una pregunta relacionada .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top