Проверьте размеры загруженного изображения - PullRequest
11 голосов
/ 04 марта 2011

Я использую asp.net 3.5 и c # на моем сайте.Вот мой вопрос:

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

Ответы [ 6 ]

22 голосов
/ 04 марта 2011
    Image img = System.Drawing.Image.FromFile("test.jpg");
    int width = img.Width;
    int height = img.Height;

Возможно, вам понадобится добавить ссылку System.Drawing.

Вы также можете использовать функцию FromStream, если вы еще не сохранили изображение на диск, но смотрите, как выиспользуя изображение (видимое пользователем в элементе управления изображением), я подозреваю, что оно уже находится на диске.Поток на изображение может или не может быть быстрее, чем диск на изображение.Возможно, вы захотите выполнить профилирование, чтобы увидеть, какая из них имеет лучшую производительность.

13 голосов
/ 04 марта 2011

В ASP.NET у вас обычно есть байт [] или поток при загрузке файла.Ниже я покажу вам один из способов сделать это, где bytes - это байт [] загруженного файла.Если вы сохраняете файл сначала, то у вас есть физический файл.и вы можете использовать то, что вам показали @Jakob или @Fun Mun Pieng.

В любом случае, НЕОБХОДИМО избавиться от экземпляра Image, как я здесь показал.Это очень важно (другие не показали этого).

  using (Stream memStream = new MemoryStream(bytes))
  {
    using (Image img = System.Drawing.Image.FromStream(memStream))
    {
      int width = img.Width;
      int height = img.Height;
    }
  }
7 голосов
/ 16 сентября 2012

Попробуйте следующее:

public bool ValidateFileDimensions()
{
    using(System.Drawing.Image myImage =
           System.Drawing.Image.FromStream(FileUpload1.PostedFile.InputStream))
    {
        return (myImage.Height == 140 && myImage.Width == 140);
    }
}
3 голосов
/ 04 марта 2011

Загрузить изображение в Изображение и проверить размеры на стороне сервера?

Image uploadedImage = Image.FromFile("uploadedimage.jpg");
// uploadedImage.Width and uploadedImage.Height will have the dimensions...
1 голос
/ 09 сентября 2013

Попробуйте это:

Stream ipStream = fuAttachment.PostedFile.InputStream;
using (var image = System.Drawing.Image.FromStream(ipStream))
{                    
    float w = image.PhysicalDimension.Width;
    float h = image.PhysicalDimension.Height;
}
0 голосов
/ 07 июля 2017

Попробуйте это.

              public boolean CheckImgDimensions(string imgPath, int ValidWidth , int ValidHeight){  

                 var img = Image.FromFile(Server.MapPath(imgPath));

                 return (img.width == ValidWidth &&  img.height == ValidHeight );
                }

Использование:

if ( CheckImgDimensions("~/Content/img/MyPic.jpg",128,128) ){ 
     /// what u want
  }
...