4

给定图像的 URL(而不是图像本身),获取其尺寸的最有效方法是什么?<img>如果图像标签 ( ) 大于 200x200,我想更改它的高度和宽度属性。但是,如果它比那个小,那么我想保持原来的大小。(我正在使用 ASP.NET/C#)

4

4 回答 4

4

与其尝试检查尺寸(这将是一种浪费,因为您几乎总是必须下载整个图像并对其进行处理),不如将图像放在一个<div>元素中max-height并将max-width容器的样式设置为你想要的尺寸?

另一种选择是在您意识到图像时获取一次图像,调整其大小以适当地适合您的容器,将其存储在您的服务器上,然后提供它。

于 2010-04-09T19:37:07.700 回答
1

如果您知道它是 JPEG,您可以只提取前几个字节并从图像标题中解析宽度/高度。

其他图像格式可能更难做到。我认为由于 PNG 以块的形式完成所有工作,因此您不能只进行这种标题检查。

于 2010-04-09T19:30:37.327 回答
1

如果您不想通过首先加载来检查图像的属性,您可以使用 javascript:

<img src="image.jpg" onload="if( this.width > 200 ) this.width = 200;">
于 2010-04-09T19:32:56.200 回答
0

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

}
于 2010-04-09T19:31:20.663 回答