将png转换为jpeg(转换后的图像质量)

时间:2014-06-22 09:47:23

标签: c#

我有大约10000个png文件的产品图片。后来我了解到生产中的产品图片是jpeg,因此我需要将新的10000 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);

对此有何想法?

1 个答案:

答案 0 :(得分: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?