压缩图像时使用的最佳色彩空间

时间:2014-04-03 09:45:00

标签: c# image-compression

我有一个C#桌面应用程序。

我不断获得相同大小和分辨率的jpeg图像。

在我上传到网络服务器之前,我会通过降低质量压缩图像。

这是降低质量的代码:

     public byte[] SaveJpeg(Image img, int quality)
    {
        byte[] data = null;
        // Encoder parameter for image quality 
        EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
        // Jpeg image codec 
        ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
        EncoderParameters encoderParams = new EncoderParameters(1);
        encoderParams.Param[0] = qualityParam;
        using (MemoryStream ms = new MemoryStream())
        {
            img.Save(ms, jpegCodec, encoderParams);
            data = ms.ToArray();
            img.Dispose();
        }
        return data;
    }


    private  ImageCodecInfo GetEncoderInfo(string mimeType)
    {
        // Get image codecs for all image formats 
        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

        // Find the correct image codec 
        for (int i = 0; i < codecs.Length; i++)
            if (codecs[i].MimeType == mimeType)
                return codecs[i];
        return null;
    } 

     //I call it thus...
     byte[] reducedSize = SaveJpeg(LatestImage, 50L)

我发现字节/图像的大小可能会发生很大变化。我注意到当图像中有很多绿色并且白天是晴天时,压缩返回的字节数是深绿色图像的两倍。

有没有更好的方法来实现我想要实现的目标?也许使用不同的色彩空间?

欢迎任何建议。

0 个答案:

没有答案