2014-06-22 119 views
3

我有大約10000 png的產品圖像文件。後來我瞭解到生產中的產品圖像是jpeg,因此我需要將我的新的10000 png文件轉換爲jpeg。如果我只是將擴展名從png更改爲jpeg,圖像質量會發生什麼變化?將png轉換爲jpeg(轉換後的圖像質量)

我對C#/ SQL Server環境中工作,我應該使用

System.Drawing.Image image1 = System.Drawing.Image.FromFile(@"C:\test.png"); 
// Save the image in JPEG format. 
image1.Save(@"C:\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 

任何思考這個?

+0

你問什麼Jpeg格式的默認質量級別是什麼? – Rotem

+1

@Rotem,我試圖找出將png轉換爲jpeg而不破壞圖像的質量/清晰度的最佳方法。 – newbieCSharp

+0

手動設置質量(儘可能最佳)。 – pasty

回答

4

Jpeg,不像PNG,是一種有損格式。質量總是會有所下降。

保存Jpeg時,可以通過使用盡可能高的質量級別來確保它不可察覺或幾乎不可感知。

MSDN摘自:

// Get a bitmap. 
Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg"); 
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg); 

// Create an Encoder object based on the GUID 
// for the Quality parameter category. 
System.Drawing.Imaging.Encoder myEncoder = 
    System.Drawing.Imaging.Encoder.Quality; 

// Create an EncoderParameters object. 
// An EncoderParameters object has an array of EncoderParameter 
// objects. In this case, there is only one 
// EncoderParameter object in the array. 
EncoderParameters myEncoderParameters = new EncoderParameters(1); 

myEncoderParameter = new EncoderParameter(myEncoder, 100L); 
myEncoderParameters.Param[0] = myEncoderParameter; 
bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jgpEncoder, myEncoderParameters); 

還要記住的是,JPEG格式不保存圖像的alpha通道。

使用默認的質量水平.NET此相關的問題涉及用途:What quality level does Image.Save() use for jpeg files?