System을 사용하여 ASP.NET<FONT size=4><FONT size=4><FONT size=4>에서 이미지를 업로드하고 축소판을 생성하기 위한 C# 소스 코드;
System.Collections 사용;
System.ComponentModel 사용;
System.Data 사용;
System.드로잉 사용;
System.Web 사용;
System.Web.SessionState 사용;
System.Web.UI 사용;
System.Web.UI.WebControls 사용;
System.Web.UI.HtmlControls 사용;
System.IO 사용;
네임스페이스 eMeng.Exam
사용
{
/// <요약>
/// 썸네일에 대한 요약 설명입니다.
/// </summary>
공개 클래스 썸네일 : System.Web.UI.Page
{
보호된 System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(개체 전송자, System.EventArgs e)
{
//페이지를 초기화하려면 여기에 사용자 코드를 입력하세요.
Label1.Text = "<h3>ASP.NET에서 쉽게 연습할 수 있나요?lt;/h3>";
Button1.Text = "썸네일 업로드 및 표시"
}
#region 웹 양식 디자이너에서 생성된 코드
보호된 void OnInit(EventArgs e) 재정의
{
//
// CODEGEN: 이 호출은 ASP.NET Web Forms 디자이너에 필요합니다.
//
초기화구성요소();
base.OnInit(e);
}
/// <요약>
/// 디자이너는 필수 메서드를 지원합니다. 코드 편집기를 사용하여 수정하지 마세요.
/// 이 메소드의 내용입니다.
/// </summary>
개인 무효 초기화 구성 요소()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load)
}
#endregion
private void Button1_Click(개체 전송자, System.EventArgs e)
{
HttpFileCollection MyFileColl = HttpContext.Current.Request.Files;
HttpPostedFile MyPostedFile = MyFileColl[0];
if (MyPostedFile.ContentType.ToString().ToLower().IndexOf("image") < 0)
{
Response.Write("잘못된 그래픽 형식입니다.");
반품;
}
GetThumbNail(MyPostedFile.FileName, 100, 100,
MyPostedFile.ContentType.ToString(), false, MyPostedFile.InputStream);
}
개인 System. Drawing.Imaging.ImageFormat GetImageType(개체 strContentType)
{
if ((strContentType.ToString().ToLower()) == "이미지/pjpeg")
{
System. Drawing.Imaging.ImageFormat.Jpeg를 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/gif")
{
System. Drawing.Imaging.ImageFormat.Gif를 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/bmp")
{
System. Drawing.Imaging.ImageFormat.Bmp를 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/tiff")
{
System. Drawing.Imaging.ImageFormat.Tiff를 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/x-아이콘")
{
System. Drawing.Imaging.ImageFormat.Icon을 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/x-png")
{
System. Drawing.Imaging.ImageFormat.Png를 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/x-emf")
{
System. Drawing.Imaging.ImageFormat.Emf를 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/x-exif")
{
System. Drawing.Imaging.ImageFormat.Exif를 반환합니다.
}
else if ((strContentType.ToString().ToLower()) == "이미지/x-wmf")
{
System. Drawing.Imaging.ImageFormat.Wmf를 반환합니다.
}
또 다른
{
System. Drawing.Imaging.ImageFormat.MemoryBmp를 반환합니다.
}
}
private void GetThumbNail(string strFileName, int iWidth, int iheight,
문자열 strContentType, bool blnGetFromFile, System.IO.Stream ImgStream)
{
System.드로잉.이미지 oImg
if(blnGetFromFile)
{
oImg = System.드로잉.이미지.FromFile(strFileName);
}
또 다른
{
oImg = System.드로잉.이미지.FromStream(ImgStream);
}
oImg = oImg.GetThumbnailImage(iWidth, iheight, null, IntPtr.Zero);
string strGuid = System.Guid.NewGuid().ToString().ToUpper();
string strFileExt = strFileName.Substring(strFileName.LastIndexOf("."));
Response.ContentType = strContentType;
MemoryStream MemStream = 새로운 MemoryStream();
oImg.Save(MemStream, GetImageType(strContentType));
MemStream.WriteTo(Response.OutputStream);
}
}
}
</FONT></FONT></FONT><FONT color=#ff0000 size=4></FONT><FONT size=4>기능:
1. 이미지 파일(JPG GIF PNG)을 업로드하고,
2. 지정된 경로에 저장(web.config에서 경로를 설정하고 파일을 원래 형식으로 저장),
3. 그리고 지정된 너비를 자동으로 생성합니다(web.config에서 너비 설정).
4. 및 지정된 형식(web.config에서 축소판 형식 지정)
5. 원본 이미지와 비율이 동일한 썸네일(썸네일의 높이는 원본 이미지의 너비와 너비 및 높이를 기준으로 계산됩니다.)
6. 파일이 이미 존재하는지 확인할 수 있습니다.
7. 재정의하지 않으면 오류가 발생합니다.
8. "원본 이미지 덮어쓰기" 확인란을 선택하면 원본 이미지를 덮어씁니다.
9. 요구 사항에 따라 웹 양식에 둘 이상의 파일 입력 및 해당 확인란을 설정할 수 있습니다.
10. 그리고 파일이 업로드된 후 파일 이름, 크기, 바이트 및
11. 썸네일의 파일 이름 크기입니다.
12. 썸네일의 파일 이름 형식은 원본 이미지 + "_thumb." + 지정 형식(예: test.jpg_thumb.gif)으로 관리가 쉽습니다.
------
공개 무효 UploadFile(객체 보낸 사람, System.EventArgs e)
{
문자열 imgNameOnly, imgNameNoExt, imgExt;
문자열 imgThumbnail;
int errorNumber = 0;
시스템.드로잉.이미지 oriImg, newImg;
string strFePicSavePath = ConfigurationSettings.AppSettings["FePicSavePath"].ToString();
string strFePicThumbFormat = ConfigurationSettings.AppSettings["FePicThumbFormat"].ToString().ToLower();
int intFeThumbWidth = Int32.Parse(ConfigurationSettings.AppSettings["FePicThumbWidth"]);
문자열 fileExt;
StringBuilder picInfo = new StringBuilder()
if(Page.IsValid)
{
for(int i = 0;i < Request.Files.Count; i++)
{
HttpPostedFile PostedFile = 요청.파일[i];
fileExt = (System.IO.Path.GetExtension(PostedFile.FileName)).ToString().ToLower()
imgNameOnly = System.IO.Path.GetFileName(PostedFile.FileName);
if(fileExt == ".jpg" || fileExt == ".gif" || fileExt == ".png")
{
if(System.IO.File.Exists(strFePicSavePath + imgNameOnly) && (checkboxlistRewrite.Items[i].Selected == false))
{
오류번호 = 오류번호 + 1;
picInfo.Append("<b>오류:</b>File("+ (i+1) +") " + imgNameOnly + "가 이미 존재합니다. 파일 이름을 변경하세요<br/>" );
}
}
또 다른
{
오류번호 = 오류번호 + 1;
picInfo.Append("<b>오류:</b> file("+ (i+1) +") " + imgNameOnly + " 확장명" + fileExt + " 허용되지 않음<br/>" );
}
}
if(오류번호 > 0)
{
picInfo.Append("<font color=red>모든 작업이 완료되지 않았습니다. 오류를 수정하고 다시 진행하십시오.</font><br/>");
}
또 다른
{
for(int i = 0;i < Request.Files.Count; i++)
{
HttpPostedFile PostedFile = 요청.파일[i];
imgNameOnly = System.IO.Path.GetFileName(PostedFile.FileName);
imgNameNoExt = System.IO.Path.GetFileNameWithoutExtension(PostedFile.FileName);
imgExt = System.IO.Path.GetExtension(PostedFile.FileName).ToString().ToLower();
oriImg = System.드로잉.이미지.FromStream(PostedFile.InputStream);
newImg = oriImg.GetThumbnailImage(intFeThumbWidth, intFeThumbWidth * oriImg.Height/oriImg.Width,null,new System.IntPtr(0));
스위치(imgExt)
{
//케이스 ".jpeg":
케이스 ".jpg":
oriImg.Save(strFePicSavePath + imgNameOnly , System.드로잉.Imaging.ImageFormat.Jpeg);
부서지다;
케이스 ".gif":
oriImg.Save(strFePicSavePath + imgNameOnly , System.드로잉.Imaging.ImageFormat.Gif);
부서지다;
케이스 ".png":
oriImg.Save(strFePicSavePath + imgNameOnly , System.드로잉.Imaging.ImageFormat.Png);
부서지다;
}
//oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameNoExt + ".jpg", System.드로잉.Imaging.ImageFormat.Jpeg)
스위치(strFePicThumbFormat);
{
//jpeg 형식은 가장 작은 파일 크기를 얻을 수 있으며 png는 가장 큰 크기입니다.
//케이스 "jpeg":
케이스 "jpg":
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.드로잉.Imaging.ImageFormat.Jpeg);
imgThumbnail = imgNameOnly + "_thumb.jpg";
부서지다;
케이스 "gif":
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.gif",System.드로잉.Imaging.ImageFormat.Gif);
imgThumbnail = imgNameOnly + "_thumb.gif";
부서지다;
케이스 "png":
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.png",System.드로잉.Imaging.ImageFormat.Png);
imgThumbnail = imgNameOnly + "_thumb.png";
부서지다;
기본:
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.드로잉.Imaging.ImageFormat.Jpeg);
imgThumbnail = imgNameOnly + "_thumb.jpg";
break;
}//스위치
picInfo.Append("<b>파일 이름:</b>" + imgNameOnly + " ( " + oriImg.Width + " x " + oriImg.Height + " ) " + PostedFile.ContentLength/1024 + "KB<br/>");
newImg.Width
+ " x " + newImg.Height + " )<br/><br/>");
처분();
newImg.Dispose()
}//for;
picInfo.Append("<font color=red>모든 작업 성공</font><br/>")
}// erronumber = 0인 경우
}
또 다른
{
picInfo.Append("<font color=red>오류가 있습니다. 확인하세요. 작업이 성공하지 못했습니다.</font><br/>")
}
lblPicInfo.Text = picInfo.ToString()
}
</FONT>