Размеры изображений в переменной FileInfo

В настоящее время я работаю над элементом управления, который отображает все изображения, хранящиеся в папке, чтобы клиент знал, что они загрузили.

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

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

Пока мой код выглядит так:

FileInfo[] files = new DirectoryInfo(Server.MapPath(@"..\_includes\images\uploads\") + folder).GetFiles();

var imagefiles = from FileInfo f in files
                         where f.Exists
                         select new
                         {
                             url = imageurl + f.Name,
                             name = f.Name,
                             creation = f.CreationTime.ToLongDateString(),
                             filesize = (f.Length / 1024).ToString() + "KB",
                         };

person Callum    schedule 01.12.2011    source источник


Ответы (2)


Вам необходимо загрузить изображение в объект Image — это даст вам размеры изображения.

using(var img = Image.FromFile(file.Name))
{
  var height = img.Height;
  var width = img.Width;
}
person Oded    schedule 01.12.2011
comment
@Callum - я бы не стал выполнять операции с изображениями в запросе LINQ. Вы можете перебрать imagefiles и использовать пример кода в цикле. - person Oded; 01.12.2011
comment
@AndersForsgren - Не доказательство дурака. В верхней части связанной статьи: Некоторые файлы изображений содержат метаданные. Некоторые. Не все. - person Oded; 01.12.2011
comment
Поместите оператор using вокруг этого кода, слишком часто забываемого и особенно неприятного в данном случае из-за блокировки файла. - person Hans Passant; 01.12.2011

Вы можете попробовать (но может потреблять ОЗУ и ЦП)

Image img = Image.FromFile(your_file);

и используйте img.Width и img.Height.

Обратите внимание, что эта информация может быть неправильной: см. мой вопрос .

person Marco    schedule 01.12.2011