2013-09-22 63 views
1

我正在尋找「將所有圖像格式轉換爲JPG」的解決方案。c#將所有圖像格式轉換爲JPG

我當前的代碼:

public ActionResult UploadProfilFotografi(HttpPostedFileBase file) 
    { 
     int sessionUID = int.Parse(Session["UID"].ToString()); 
     using (var dbContext = new DB_EMafya()) 
     { 
      if (file != null 
       && file.ContentLength > 1 
       && file.ContentLength < 5120 
       && myFunction.IsImage(file)) 
      { 
       var users = dbContext 
        .tbl_Users 
        .FirstOrDefault(a => a.UID == sessionUID); 

       if (users != null) 
       { 
        string newPicName = (string) Session["UID"]; 
        string extension = Path.GetExtension(file.FileName); 
        if (extension != null) 
        { 
         string picext = extension.ToLower(); 
         string originalpath = Path.Combine(
          Server.MapPath("~/up/profile-pictures/originals"), 
          newPicName + picext); 

         // file is uploaded 
         file.SaveAs(originalpath); 
        } 
       } 
      } 
     } 
     return RedirectToAction("ProfilAyarlari", "Profil"); 
    } 

你能幫上這個嗎?

我找到一個解決方案: c# convert image formats to jpg

我編輯了一些並增加了一些更值的功能。並將代碼放入使用中。

private void SaveAsJpgWithVaryQualityLevel(HttpPostedFileBase file, string toPath, string fileName) 
    { 
     using (var target = new MemoryStream()) 
     { 
      file.InputStream.CopyTo(target); 
      using (var bmp1 = new Bitmap(target)) // Get a bitmap. 
      { 
       var jgpEncoder = GetEncoder(ImageFormat.Jpeg); 
       var myEncoder = Encoder.Quality; 
       using (var myEncoderParameters = new EncoderParameters(1)) 
       { 
        using (var myEncoderParameter = new EncoderParameter(myEncoder, 100L)) 
        { 
         myEncoderParameters.Param[0] = myEncoderParameter; 
         bmp1.Save(@"" + toPath + fileName, jgpEncoder, myEncoderParameters); 
        } 
       } 
      } 
     } 

    } 

    private ImageCodecInfo GetEncoder(ImageFormat format) 
    { 
     ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); 
     return codecs.FirstOrDefault(codec => codec.FormatID == format.Guid); 
    } 

呼喚:

string newPicName = Convert.ToString(Session["UID"]) + ".jpg"; 
string toPath = Server.MapPath("~/_up/profile-pictures/originals/"); 
SaveAsJpgWithVaryQualityLevel(file, toPath, newPicName); // file is uploaded 
+1

的如何是代碼相關去...什麼?它不做任何類型的轉換。你對你的問題的*轉換*部分進行了什麼嘗試?另外,你爲什麼關心一切都是JPG?網絡上還有其他幾種格式。如果他們*必須*爲JPG,爲什麼不強制上傳? – debracey

+0

親愛的debracey,我想將所有圖像轉換爲jpg,因爲我只想知道所有用戶上傳的JPG格式。而我是新的。順便說一句@BartoszKP,感謝編輯。問候 –

+0

看看這裏讓你開始http://stackoverflow.com/questions/11807971/imagemagick-net-issues – rene

回答

4

也許這個代碼將幫助您:

的imageformat是一類System.Drawing.Imaging

public Image BitmapToBytes(HttpPostedFileBase file, ImageFormat p_Format) 
{ 

BinaryReader b = new BinaryReader(file.InputStream); 
byte[] binData = b.ReadBytes(file.InputStream.Length); 

Image imageObject = new Bitmap(MemoryStream(binData)); 

MemoryStream stream = new MemoryStream(); 
imageObject.Save(stream, p_Format); 

return new Bitmap(stream); 
}