Получить размеры удаленного изображения - PullRequest
3 голосов
/ 09 апреля 2010

Учитывая URL к изображению (а не само изображение), что является наиболее эффективным для получения его размеров? Я хотел бы изменить атрибуты высоты и ширины в теге изображения (<img>), если он больше 200x200. Однако, если он меньше, то я бы хотел сохранить размер таким, какой он есть. (Я использую ASP.NET/C#)

Ответы [ 4 ]

4 голосов
/ 09 апреля 2010

Вместо того, чтобы пытаться проверить размеры (что было бы пустой тратой, поскольку вам почти всегда приходилось бы загружать все изображение и обрабатывать его), почему бы просто не поместить изображение в элемент <div> и установить max-height и max-width стили контейнера с нужными размерами?

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

1 голос
/ 09 апреля 2010

Если вы не хотите проверять свойства изображения, сначала загрузив его, вы можете сделать это с помощью javascript:

<img src="image.jpg" onload="if( this.width > 200 ) this.width = 200;">
1 голос
/ 09 апреля 2010

Если вы знаете, что это JPEG, вы можете просто извлечь первые несколько байтов и проанализировать ширину / высоту из заголовка изображения.

Другие форматы изображений могут быть сложнее. Я думаю, что, поскольку PNG делает все по частям, вы не можете просто выполнить такую ​​проверку заголовка.

0 голосов
/ 09 апреля 2010

http://www.brettb.com/ASPNETUploadImageSize.asp

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

private void ButtonUpload_Click(object sender, System.EventArgs e)  {

    //Determine type and filename of uploaded image
    string UploadedImageType = UploadedPicture.PostedFile.ContentType.ToString().ToLower();
    string UploadedImageFileName = UploadedPicture.PostedFile.FileName;

    //Create an image object from the uploaded file
    System.Drawing.Image UploadedImage = System.Drawing.Image.FromStream(UploadedPicture.PostedFile.InputStream);

    //Determine width and height of uploaded image
    float UploadedImageWidth = UploadedImage.PhysicalDimension.Width;
    float UploadedImageHeight = UploadedImage.PhysicalDimension.Height;

    //Check that image does not exceed maximum dimension settings
    if (UploadedImageWidth > 600 || UploadedImageHeight > 400) {
            Response.Write("This image is too big - please resize it!");
    }

}
...