2012-02-09 3 views
0

이미지를 업로드 한 후 다음 코드를 사용하여 크기를 조정합니다. 기능은 이미지 의 크기를 변경하고 파일 확장명을 변경하지 않고 새 이름으로 저장하며 모든 주요 브라우저에서 이미지가 완벽하게 표시됩니다. * 파일을 열 수 없습니다 : 어떤 하나의 이미지를 다운로드의 다음과 같은 오류를이미지를 업로드하면 이미지가 업로드되고 크기가 변경되지 않습니다.

오류를 줄 것이다 불꽃 놀이 또는 Photoshop 그것과 같은 모든 이미지 편집기를 엽니 다하려고하는 경우에만

문제입니다. 알 수없는 파일 유형입니다. *

왜 그런 오류가 발생하는지 잘 모르겠습니다.

이미지 크기를 조정하는 기능.

public static void ResizeImageInput(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, bool OnlyResizeIfWider) 
    { 
     System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(OriginalFile); 
     // Prevent using images internal thumbnail 
     FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone); 
     FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone); 
     if (OnlyResizeIfWider) 
     { 
      if (FullsizeImage.Width <= NewWidth) 
      { 
       NewWidth = FullsizeImage.Width; 
      } 
     } 
     System.Drawing.Image NewImage = FullsizeImage.GetThumbnailImage(NewWidth, MaxHeight, null, IntPtr.Zero); 
     // Clear handle to original file so that we can overwrite it if necessary 
     FullsizeImage.Dispose(); 
     // Save resized picture 
     NewImage.Save(NewFile); 
    } 

기능은 이미지 업로드

protected void btnArticlePageImage_Click(object sender, EventArgs e) 
{ 

    try 
    { 
     String filePath = string.Empty; 
     String CurrentGUID = Guid.NewGuid().ToString(); 

     if (FileUpload2.HasFile) 
     { 
      string filename = System.IO.Path.GetFileName(FileUpload2.FileName); 
      System.IO.FileInfo f = new System.IO.FileInfo(FileUpload2.PostedFile.FileName); 
      double fileSize = (double)FileUpload2.FileBytes.Length; 
      if (fileSize < 1024000) // 1 MB current size size in bytes 102400=100kb 512000 = 500kb 
      { 
       if ((f.Extension.ToLower() == ".jpg") || (f.Extension.ToLower() == ".png") || (f.Extension.ToLower() == ".gif") || (f.Extension.ToLower() == ".jpeg")) 
       { 
        filename = CurrentGUID + f.Extension; 
        //string productGUID 
        filePath = Server.MapPath("../ImagesArticles/") + filename; 
        if (System.IO.File.Exists(filePath)) 
        { 
         return; 
        } 
        else 
        { 
         //Upload files 
         FileUpload2.PostedFile.SaveAs(Server.MapPath("../ImagesArticles/") + filename); 
         //objPages.PageBannerImageEn = filename; 
         Session["ArticleLargeImage"] = filename.ToString(); 
         string errMsg = "File Uploaded Successfully"; 
         lblImageUploadMessage1.Text = errMsg; 
         // ResizeImage(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, bool OnlyResizeIfWider) 
         Helper.ResizeImage(filePath, filePath, 150, 80, true); 
        } 
        return; 
       } 
       else 
       { 
        string errMsg = "File must be an Image type of .jpg, .png, .gif, .jpeg"; 
        //client-side error 
        lblImageUploadMessage1.Text = errMsg; 
        return; 
       } 
      } 
      else 
      { 
       string errMsg = "File size is greater the 1MB"; 
       //client-side error 
       lblImageUploadMessage1.Text = errMsg; 
       return; 
      } 
     } 
     else 
     { 
      //lblMesg.Text = "Only type .jpg, .png, .gif are allow"; 
      string errMsg = "Cant Upload File due to some error"; 
      //client-side error 
      lblImageUploadMessage1.Text = errMsg; 
      return; 
     } 
    } 
    catch (Exception ex) 
    { 
     Response.Write("ERROR MESSAGE : " + ex.Message.ToString()); 
    } 

} 

순서 : 이미지 형식 JPG, GIF를 업로드 할 수 있습니다 사용자는, PNG 등 난 단지 GUID와 이미지 이름을 변경하고 같은 이미지 확장을 계속하고 웹 서버에 저장하십시오. 그 후 나중에 사용하기 위해 크기를 조정합니다.

이러한 모든 크기의 이미지는 모든 브라우저에서 정상적으로 작동하지만 이미지를 편집하기 위해 이러한 이미지를 다운로드 한 경우에만 그래픽 편집기 도구에서 열리지 않습니다.

질문의 첫 번째 부분에서 언급 한 것처럼 일반적인 오류 메시지가 나타납니다. 저장 imageformat를 추가

+0

추가하지 마십시오 등입니다. 그냥 태그를 복제합니다. –

+0

[모든 것이 올바르게 작동하지 않으면] ASP.NET 응용 프로그램에서 System.Drawing 네임 스페이스를 사용하는 것은 대단히 어렵습니다 (http://nathanaeljones.com/163/20-image-resizing-pitfalls/). 현재 모든 호출에 대해'NewImage' 및 예외가 발생하면 FullsizeImage가 누출됩니다. 당신은 [asp.net 안전 라이브러리를 사용하는 것을 고려할 수 있습니다] (http://imageresizing.net). –

답변

0

시도, 이것은 당신의 제목에 지프 "는 asp.net 웹 형태로.의 asp.net C#을"이미지

NewImage.Save(NewFile, System.Drawing.Imaging.ImageFormat.Gif); 
+0

이 옵션을 사용해 보겠습니다. – Learning

+0

작동하지 않습니다. 확장 유형을 지정한 후에도 여전히 동일한 오류가 발생합니다. – Learning

+0

제 실수는 이제 작동합니다. 팁 주셔서 감사합니다. 감사합니다 – Learning