C#图片处理之: 另存为压缩质量可自己控制的JPEG
来源:互联网 发布:微软未来发展 大数据 编辑:程序博客网 时间:2024/05/19 22:00
处理图片时常用的过程是:读入图片文件并转化为Bitmap -> 处理此Bitmap的每个点以得到需要的效果 -> 保存新的Bitmap到文件
使用C#很方便的就可以把多种格式的图片文件读到Bitmap对象中。一句话就够了,常见的格式都支持,诸如JPEG,BMP,PNG等等。
Bitmap bmp = new Bitmap("文件名");
然后就是怎么处理这个图片的问题了,与本案无关,pass。
最后就是保存。JPEG虽然是有损压缩方案,但是它在缩减文件体积和尽可能好的保留原有信息的矛盾上很好的找到了平衡点,所以在很多情况下成为首选的保存方案。
C#当然不会无视这一点,Bitmap类提供了默认的另存为JPEG的方法:
bmp.Save("输出文件", System.Drawing.Imaging.ImageFormat.Jpeg);
这样当然很方便,但有时候更在乎文件体积而有时候更在乎图像质量,是不是有什么办法可以让自己来控制压缩质量呢?
答案是肯定的,bmp.Save方法中有个重载用到了EncoderParameters参数。我们可以在这个参数中加入自己的控制质量。
/**//// <summary>
/// 保存JPG时用
/// </summary>
/// <param name="mimeType"></param>
/// <returns>得到指定mimeType的ImageCodecInfo</returns>
private static ImageCodecInfo GetCodecInfo(string mimeType)
{
ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo ici in CodecInfo)
{
if (ici.MimeType == mimeType) return ici;
}
return null;
}
/**//// <summary>
/// 保存为JPEG格式,支持压缩质量选项
/// </summary>
/// <param name="bmp"></param>
/// <param name="FileName"></param>
/// <param name="Qty"></param>
/// <returns></returns>
public static bool KiSaveAsJPEG(Bitmap bmp, string FileName, int Qty)
{
try
{
EncoderParameter p;
EncoderParameters ps;
ps = new EncoderParameters(1);
p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qty);
ps.Param[0] = p;
bmp.Save(FileName, GetCodecInfo("image/jpeg"), ps);
return true;
}
catch
{
return false;
}
}
使用C#很方便的就可以把多种格式的图片文件读到Bitmap对象中。一句话就够了,常见的格式都支持,诸如JPEG,BMP,PNG等等。
Bitmap bmp = new Bitmap("文件名");
然后就是怎么处理这个图片的问题了,与本案无关,pass。
最后就是保存。JPEG虽然是有损压缩方案,但是它在缩减文件体积和尽可能好的保留原有信息的矛盾上很好的找到了平衡点,所以在很多情况下成为首选的保存方案。
C#当然不会无视这一点,Bitmap类提供了默认的另存为JPEG的方法:
bmp.Save("输出文件", System.Drawing.Imaging.ImageFormat.Jpeg);
这样当然很方便,但有时候更在乎文件体积而有时候更在乎图像质量,是不是有什么办法可以让自己来控制压缩质量呢?
答案是肯定的,bmp.Save方法中有个重载用到了EncoderParameters参数。我们可以在这个参数中加入自己的控制质量。
/**//// <summary>
/// 保存JPG时用
/// </summary>
/// <param name="mimeType"></param>
/// <returns>得到指定mimeType的ImageCodecInfo</returns>
private static ImageCodecInfo GetCodecInfo(string mimeType)
{
ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo ici in CodecInfo)
{
if (ici.MimeType == mimeType) return ici;
}
return null;
}
/**//// <summary>
/// 保存为JPEG格式,支持压缩质量选项
/// </summary>
/// <param name="bmp"></param>
/// <param name="FileName"></param>
/// <param name="Qty"></param>
/// <returns></returns>
public static bool KiSaveAsJPEG(Bitmap bmp, string FileName, int Qty)
{
try
{
EncoderParameter p;
EncoderParameters ps;
ps = new EncoderParameters(1);
p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qty);
ps.Param[0] = p;
bmp.Save(FileName, GetCodecInfo("image/jpeg"), ps);
return true;
}
catch
{
return false;
}
}
- C#图片处理之: 另存为压缩质量可自己控制的JPEG
- C#图片处理之: 另存为压缩质量可自己控制的JPEG
- C#图片处理之:另存为压缩质量可自己控制的JPEG
- C#图片处理之: 另存为压缩质量可自己控制的JPEG
- C#图片处理之: 另存为压缩质量可自己控制的JPEG
- C# 后台 对于JPEG图片的压缩
- 图片质量压缩 与 图片格式 JPEG PNG
- C#图片处理之:保存原始Exif到处理过的JPEG图片中
- 读取JPEG文件的压缩质量/质量因子参数
- 如何获取JPEG图片质量和预测压缩图片大小
- C#对图片进行马赛克处理,可控制模糊程度
- C#图片压缩处理
- C#图片压缩处理
- C# 图片压缩处理
- C# winform 另存为picturebox里的图片
- c# 无损高质量压缩图片代码
- c# 无损高质量压缩图片代码
- c# 无损高质量压缩图片代码
- ORACLE设置递增主键
- windows下ngx+php配置
- 本地复制不能粘贴到服务器上
- ping命令加上时间标签,检测网络连接状态(最新方案)
- 应用JAX-RPC跟JAXWS开发Web Services名目
- C#图片处理之: 另存为压缩质量可自己控制的JPEG
- (vba)用于将大表差分成若干个小表的脚本
- 百度面试题
- Go语言资料收集
- 又拍网架构中的分库设计
- sell 脚本的一些应用
- Windows & Unix 文件格式之迷
- 关于.oscrc
- 新学习android 。。。从哪里开始。。。。