2014-06-22 117 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?