2012-02-09 10 views
0

私はアップロード後に画像のサイズを変更するために次のコードを使用します。機能はイメージ のサイズを変更し、ファイル拡張子を変更せずに新しい名前で保存し、画像はすべての主要なブラウザで完全に表示されます。 * がファイルを開くことができませんでした:イメージがアップロードされた場合、画像のアップロードとサイズ変更はイメージエディタツールで開かないでください

問題は、いくつかのいずれかの画像をダウンロードし、それが次のエラーに

ERRORを与える花火や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で画像の名前を変更し、同じ画像の拡張子を維持し、 Webサーバーに保存します。その後、私は後で使用するためにイメージのサイズを変更します。

これらのサイズの画像はすべてのブラウザで正常に動作しますが、誰かが編集用にこれらの画像をダウンロードしてもグラフィックエディタツールで開くことはできません。

質問の最初の部分で説明したような共通のエラーメッセージが表示されます。保存するimageformatを追加

+0

追加しないでくださいと、このようなためです。タグを複製するだけです。 –

+0

あなたが[すべてを行う](http://nathanaeljones.com/163/20-image-resizing-pitfalls/)を除いてASP.NETアプリケーションでSystem.Drawing名前空間を使用することは非常に悪いことに注意してください。現在、すべての呼び出しで 'NewImage'がリークしており、例外が発生した場合はFullsizeImageがリークしています。あなたは[asp.netの安全なライブラリを使用することを検討するかもしれません](http://imageresizing.net)。 –

答えて

0

てみてください、これはあなたのタイトルへのgif「asp.netのWebフォームインチのasp.net C#の」画像

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

このオプションを試してみましょう。 – Learning

+0

does not work拡張タイプを指定しても同じエラーが表示されます。 – Learning

+0

私の間違いは今働いてくれてありがとう。よろしくお願いします。 – Learning

関連する問題