2010-04-09 95 views
3

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

+0

如果我理解正确,您希望调整浏览器中的图像大小,以便所有图像都是模糊的?如果是这样,请检查我的答案,以便如何在javascript中执行此操作。 – 2010-04-09 19:56:08

回答

1

如果你不想先加载它,你可以这样做是为了检查图像的属性JavaScript的:

<img src="image.jpg" onload="if(this.width > 200) this.width = 200;"> 
1

如果您知道这是一个JPEG格式,您可以拉动first few bytes并解析图像头部的宽度/高度。

其他图像格式可能更难做。我认为,既然PNG能够完成所有的功能,那么您不能仅仅进行这种标题检查。

0

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

该代码示例来自上述网站。这是一个上传的图像,但它表明你如何从一个文件流得到informatin:

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

} 
+0

我认为这在技术上是作弊的,因为它实际上会下载图像。 :) – MusiGenesis 2010-04-09 19:43:57

4

而不是试图检查的尺寸(这将是一种浪费,因为你几乎总是需要下载整个图像并进行处理),为什么不直接把图像中的<div>元素并将容器的max-heightmax-width样式设置为所需的尺寸?

另一种选择是,当你意识到这一点,以一次撷取图片,调整大小以适应你的货柜适当,将其存储在服务器上,并成为了这一点。

+0

对我来说,他想要在浏览器中调整图像的高度/宽度属性。在div上设置大小不会调整大小。 – 2010-04-09 19:52:11

+0

这是一个很好的解决方案,很容易,服务器不需要做任何工作= D – 2011-10-07 06:22:10