Как я могу получить размер изображения (w x h), используя Stream
У меня есть этот код, который я использую для чтения загруженного файла, но мне нужно получить размер изображения, но не уверен, какой код я могу использовать
HttpFileCollection collection = _context.Request.Files;
for (int i = 0; i < collection.Count; i++)
{
HttpPostedFile postedFile = collection[i];
Stream fileStream = postedFile.InputStream;
fileStream.Position = 0;
byte[] fileContents = new byte[postedFile.ContentLength];
fileStream.Read(fileContents, 0, postedFile.ContentLength);
Я могу получить файл правильно, но как проверить его изображение (ширина и размер) сэр?
Ответы
Ответ 1
Сначала вы должны записать изображение:
System.Drawing.Image image = System.Drawing.Image.FromStream (new System.IO.MemoryStream(byteArrayHere));
а затем у вас есть:
image.Height.ToString();
и
image.Width.ToString();
Примечание: вы можете добавить чек, чтобы убедиться, что оно было загружено?
Ответ 2
HttpPostedFile file = null;
file = Request.Files[0]
if (file != null && file.ContentLength > 0)
{
System.IO.Stream fileStream = file.InputStream;
fileStream.Position = 0;
byte[] fileContents = new byte[file.ContentLength];
fileStream.Read(fileContents, 0, file.ContentLength);
System.Drawing.Image image = System.Drawing.Image.FromStream(new System.IO.MemoryStream(fileContents));
image.Height.ToString();
}
Ответ 3
Прочитайте изображение в буфер (у вас либо есть Stream для чтения, либо байт [], потому что если бы у вас было изображение, у вас были бы размеры в любом случае).
public Size GetSize(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
var image = System.Drawing.Image.FromStream(stream);
return image.Size;
}
}
Затем вы можете перейти к размерам изображения:
var size = GetSize(bytes);
var width = size.Width;
var height = size.Height;