• C# 压缩质量可自己控制的JPEG的几种方式


     

    1.在C#中,可以使用Bitmap类来读取和处理图片文件。

    要另存为压缩质量可自己控制的JPEG图片,可以使用Bitmap的Save方法,并在其中设置JPEG的压缩质量。 以下是一个简单的示例,说明如何将Bitmap保存为JPEG图片,其中可以自定义压缩质量:

    1. Bitmap bitmap = new Bitmap("input.jpg");
    2. bitmap.Save("output.jpg", ImageFormat.Jpeg,
    3. new EncoderParameters(1, new EncoderParameter(Encoder.Quality, 50L)));

    在这个示例中,"input.jpg"是输入的图片文件名,"output.jpg"是输出的图片文件名。Encoder.Quality是JPEG压缩质量的参数,50L表示压缩质量为50。这个值可以是0到100之间的整数,0表示最高质量,100表示最低质量。 请注意,这个示例使用了EncoderParameters类来设置JPEG的压缩质量。EncoderParameters是一个枚举类,它包含了一个或多个EncoderParameter对象。EncoderParameter对象用于设置特定的编码参数。在这个示例中,我们设置了一个EncoderParameter对象,它的Encoder参数为Encoder.Quality,值为50L。

    2.C#图片处理之: 另存为压缩质量可自己控制的JPEG

    1. /**
    2. /// 保存JPG时用
    3. ///
    4. ///
    5. /// 得到指定mimeType的ImageCodecInfo
    6. private static ImageCodecInfo GetCodecInfo(string mimeType)
    7. {
    8. ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
    9. foreach (ImageCodecInfo ici in CodecInfo)
    10. {
    11. if (ici.MimeType == mimeType) return ici;
    12. }
    13. return null;
    14. }
    15. /**
    16. /// 保存为JPEG格式,支持压缩质量选项
    17. ///
    18. ///
    19. ///
    20. ///
    21. ///
    22. public static bool KiSaveAsJPEG(Bitmap bmp, string FileName, int Qty)
    23. {
    24. try
    25. {
    26. EncoderParameter p;
    27. EncoderParameters ps;
    28. ps = new EncoderParameters(1);
    29. p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qty);
    30. ps.Param[0] = p;
    31. bmp.Save(FileName, GetCodecInfo("image/jpeg"), ps);
    32. return true;
    33. }
    34. catch
    35. {
    36. return false;
    37. }
    38. }

    3.在C#中,你可以使用 System.Drawing 和 System.IO 命名空间中的类来另存为JPEG图像,并控制其压缩质量。
    不过,直接控制JPEG压缩质量的任务在.NET中并不直接支持,因为JPEG压缩是由库(如libjpeg)完成的,而.NET并没有提供直接操作这些库的接口。

    然而,你可以使用一些第三方库如ImageSharp,它提供了更高级的图像处理功能,包括JPEG压缩。
    首先,你需要安装 ImageSharp 包。你可以通过 NuGet 包管理器来安装它:
    Install-Package ImageSharp
    然后,你可以使用以下代码来保存一个图像为JPEG,同时控制其压缩质量:

    1. using System.Drawing;
    2. using ImageSharp;
    3. using System.IO;
    4. public void SaveImageWithQuality(Bitmap bmp, string path, int quality)
    5. {
    6. using (var img = Image.FromBitmap(bmp))
    7. {
    8. img.Mutate(x => x
    9. .Format(ImageFormat.Jpeg)
    10. .Quality(quality)
    11. .Save(path));
    12. }
    13. }

    在这个代码中,Bitmap 是你要保存的图像,path 是你要保存的路径,quality 是JPEG的质量,范围是0-100(100表示最高质量,即无压缩)。注意,ImageSharp 的 Quality 设置并不直接对应于传统的JPEG压缩质量设置,它是一个更为复杂的算法,但大致上,更高的质量值意味着更少的压缩和更好的图像质量。

    这只是一种可能的解决方案。实际上,对于这样的问题,你可能需要更深入地理解JPEG压缩,或者寻找一个可以直接控制JPEG压缩质量的第三方库。

     

     

  • 相关阅读:
    SLD60N02T美浦森20V 60A N沟道 MOS管
    【Docker】Docker简介
    opencv之VideoCapture与VideoWriter笔记
    python基于Echarts的城科就业数据可视化系统毕业设计源码150915
    Unity 小技巧积累
    【学习笔记54】运动函数的分析
    如何在Linux服务器上安装Gerrit
    安卓APP源码和报告——学生信息管理系统
    【目标检测】30、
    PDF如何转word文档
  • 原文地址:https://blog.csdn.net/wangnaisheng/article/details/132321937