Вопрос

Я хотел бы найти высоту / ширину изображения на диске, не открывая его, если это возможно (по соображениям производительности).

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

Это было полезно?

Решение

Есть несколько вопросов stackoverflow о том, как считывать информацию EXIF из изображений, таких как: Как получить EXIF-данные из файла с помощью C#

Другие советы

Используйте систему.Рисование.Класс изображения.

        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"));

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

256 bytes = 16px x 16px

:-)

Или вы можете попробовать прочитать информацию EXIF изображения, используя это библиотека codeplex

Windows не хранит (эти) метаданные в каком-либо специальном месте файловой системы;окно свойств просто считывает их из самого файла изображения.

Я не думаю.NET предлагает какие-либо функции для чтения только метаданных из изображения без загрузки всего изображения.Если вы имеете дело только с ограниченным количеством различных форматов изображений (например,только JPEG, PNG и GIF), не должно быть слишком сложно самостоятельно определить размер из заголовка изображения.

Если, с другой стороны, вам приходится иметь дело со многими форматами изображений, возможно, вы сможете взглянуть на исходный код Unix file полезность.Ему удается определять размер множества различных форматов изображений, и он невероятно быстро загружается.

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

Вам не нужно было бы читать всю информацию о цвете / растровом изображении, только заголовок.

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

Чтобы ознакомиться со свойствами, отображаемыми проводником Windows, вы можете воспользоваться Средства управления и автоматизации Microsoft Shell компонент.Преимущество этого заключается в том, что вам не нужна никакая сторонняя библиотека (COM-объект уже есть) или дополнительный код для синтаксического анализа заголовка изображения, и что он будет работать с различными форматами.

Пример кода можно найти в ответе на связанный с этим вопрос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top