2014-06-22 3 views
3

J'ai environ 10000 fichiers PNG d'images de produits. J'ai appris plus tard que les images de produits en production sont en jpeg et que j'ai donc besoin de convertir mes nouveaux fichiers png 10000 en jpeg. Qu'arrivera-t-il à la qualité de l'image si je change juste l'extension de png en jpeg?Convertir png en jpeg (qualité d'image après conversion)

Je travaille sur C#/environnement SQL Server et dois-je utiliser

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); 

Toute pensée à ce sujet?

+0

Demandez-vous ce que le niveau de qualité par défaut pour Jpeg est? – Rotem

+1

@Rotem, j'essayais de comprendre la meilleure façon de convertir png en JPEG sans détruire la qualité/la netteté de l'image – newbieCSharp

+0

Définir la qualité manuellement (au mieux possible). – pasty

Répondre

4

Jpeg, contrairement à PNG, est un format avec perte. Il y aura toujours une diminution de la qualité.

Vous pouvez vous assurer qu'il est imperceptible ou presque invisible en utilisant le niveau de qualité le plus élevé possible lors de la sauvegarde du Jpeg.

Taken de 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); 

Gardez à l'esprit que le format Jpeg ne sauvegarde pas le canal alpha de l'image.

Cette question traite avec le .NET liées au niveau de la qualité par défaut utilise: What quality level does Image.Save() use for jpeg files?