我在我的網站上使用asp.net 3.5和c#。 這裏是我的問題:查看上傳的圖片尺寸
我有一個上傳按鈕和asp:圖像在一個頁面上。用戶可以從他的電腦上傳圖像,該圖像將顯示在asp:圖像中。但在顯示圖像之前,我想檢查上傳圖像的寬度和高度。我該怎麼做呢?
在此先感謝。
我在我的網站上使用asp.net 3.5和c#。 這裏是我的問題:查看上傳的圖片尺寸
我有一個上傳按鈕和asp:圖像在一個頁面上。用戶可以從他的電腦上傳圖像,該圖像將顯示在asp:圖像中。但在顯示圖像之前,我想檢查上傳圖像的寬度和高度。我該怎麼做呢?
在此先感謝。
Image img = System.Drawing.Image.FromFile("test.jpg");
int width = img.Width;
int height = img.Height;
您可能需要添加System.Drawing中參考。
如果您還沒有將圖像保存到磁盤,但是看看您如何使用圖像(用戶可以在Image控件中查看),您也可以使用FromStream
函數,我懷疑它已經在磁盤上。流到圖像可能比磁盤更快也可能不更快。你可能想要做一些分析,看看哪個有更好的性能。
將圖像載入Image並檢查服務器的尺寸?
Image uploadedImage = Image.FromFile("uploadedimage.jpg");
// uploadedImage.Width and uploadedImage.Height will have the dimensions...
燁,如果圖像心不是太大,服務器內存... – BerggreenDK 2013-03-16 13:54:41
在ASP.NET中,當文件上傳時,通常有byte []或Stream。下面,我向您展示了一種方法來實現這一點,其中字節是上傳文件的字節[]。如果你要保存文件,那麼你有一個物理文件。您可以使用@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;
}
}
Thaks Shiv。這是處理圖像的好處。 – chuckyCheese 2011-03-04 13:13:45
如果您嘗試上載PDF或EXE文件,這個文件也會崩潰。 – BerggreenDK 2013-03-16 14:28:51
嘗試以下操作:
public bool ValidateFileDimensions()
{
using(System.Drawing.Image myImage =
System.Drawing.Image.FromStream(FileUpload1.PostedFile.InputStream))
{
return (myImage.Height == 140 && myImage.Width == 140);
}
}
是的,非常適合圖像,但如果用戶上傳「無圖像」是由故障或故意造成的,則PDF和EXE存在問題。 – BerggreenDK 2013-03-16 14:30:00
試試這個:
Stream ipStream = fuAttachment.PostedFile.InputStream;
using (var image = System.Drawing.Image.FromStream(ipStream))
{
float w = image.PhysicalDimension.Width;
float h = image.PhysicalDimension.Height;
}
試試這個。
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
}
感謝樂趣門。這幫助了我! – chuckyCheese 2011-03-04 13:14:17
這可以工作,直到有人上傳惡意大圖像 - 例如100k x 100k像素尺寸。您的服務器將耗盡內存。 – 2013-02-25 08:57:57
@o_o在大圖像的情況下檢查'HttpPostedFileBase.ContentLength'屬性,以便沒有人上傳大於1-2兆字節的圖像。 – vorrtex 2013-11-13 15:10:28