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 и сохранить расширение изображения, а затем то же самое сохраните его на веб-сервере. После этого i re размер изображения для последующего использования.

Эти изображения размером с результирующее изображение прекрасно работают во всех браузерах, но только проблема заключается в том, что кто-то загружает это изображение для редактирования, оно не будет открыто в каких-либо инструментах графического редактора.

Он дает общее сообщение об ошибке, как упоминалось в первой части вопроса.

+0

Пожалуйста, не добавляйте «asp.net C# в веб-форме asp.net» и такие для своих книг. Он просто дублирует теги. –

+0

Обратите внимание, что очень просто использовать пространство имен System.Drawing в приложении ASP.NET, если вы не сделаете все правильно (http://nathanaeljones.com/163/20-image-resizing-pitfalls/). Вы в настоящее время протекаете 'NewImage' на каждый вызов и FullsizeImage, если возникает исключение. Вы можете [рассмотреть возможность использования библиотеки asp.net safe] (http://imageresizing.net). –

ответ

0

Попробуйте добавить ImageFormat, чтобы сохранить это для рисунок

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

Позвольте мне попробовать эту опцию. – Learning

+0

Не работает Все равно дает такую ​​же ошибку даже после указания типа расширения. – Learning

+0

Моя ошибка теперь работает. Спасибо за отзыв. С уважением – Learning

Смежные вопросы