2012-07-11 70 views
1

我正在将所有图像格式更改为.gif格式,但在更改为新格式后会丢失其质量。我使用下面的代码来更改格式。在更改图像格式时丢失图像质量

String paths = HttpContext.Current.Request.PhysicalApplicationPath + "DesktopModules\\DNAiusParallelSlider\\Images\\"+ModuleId.ToString()+"\\"; 
if (FileUpload2.HasFile) 
{ 
    string extension = Path.GetExtension(FileUpload2.PostedFile.FileName); 
    FileUpload2.SaveAs(paths + "waves" + extension); 
    System.Drawing.Image image1 = System.Drawing.Image.FromFile(@paths + "\\waves" + extension); 
    System.Drawing.Image img = System.Drawing.Image.FromFile(@paths + "\\waves" + extension); 
    if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg)) 
    { 
     image1.Save(@paths + "\\waves.gif", System.Drawing.Imaging.ImageFormat.Gif); 
    } 
    if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp)) 
    { 
     image1.Save(@paths + "\\waves.gif", System.Drawing.Imaging.ImageFormat.Gif); 
    } 
    if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png)) 
    { 
     image1.Save(@paths + "\\waves.gif", System.Drawing.Imaging.ImageFormat.Gif); 
    } 
    if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff)) 
    { 
     image1.Save(@paths + "\\waves.gif", System.Drawing.Imaging.ImageFormat.Gif); 
    } 
    if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf)) 
    { 
     image1.Save(@paths + "\\waves.gif", System.Drawing.Imaging.ImageFormat.Gif); 
    } 
    if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Wmf)) 
    { 
     image1.Save(@paths + "\\waves.gif", System.Drawing.Imaging.ImageFormat.Gif); 
    } 
    // Save the image in PNG format. 
} 
+1

可能是因为GIF格式只支持256色。 – Maarten 2012-07-11 11:26:34

+1

另外,请记住,jpeg和(据我所知)wmf和emf格式是有损的,并且在首先将它们保存起来时会失去质量。另外,将jpeg保存为gif是浪费压缩算法潜力的好方法。 – Tharwen 2012-07-11 11:30:45

回答

1

我认为它不可避免地转换为GIF时,特别是从

JPEG和PNG你将失去质量。这是因为Gif是8位格式,这意味着该格式支持的最大颜色数为256.

因此,由于近似原因,您可能会失去颜色差异的优良阴影。

GIF适用于只有几种不同颜色的图像,如线条图和简单的漫画。

如果你仍然怀疑你的C#代码,你可以去this online image converter检查质量。