我有大约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);
对此有何想法?
答案 0 :(得分:4)
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?