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