c# GDI+ Image.Save()或者Bitmap.Save()方法保存高质量图片
来源:互联网 发布:vscode web开发插件 编辑:程序博客网 时间:2024/05/13 10:17
GDI+保存质量比较高的图片的方法,使用Image或者Bitmap的Save方法调节图像保存的质量。
Image.Save方法共有五种重载
其中Save(String, ImageCodecInfo, EncoderParameters)和Save(Stream, ImageCodecInfo,EncoderParameters)这两种方法课以调节图像质量。
Save.(string ,ImageCodeInfo,EncoderParameters) 使用方法:
参数:
filename 类型:System.String 字符串,包含要将此 Image 保存到的文件的名称。
encoder 类型:System.Drawing.Imaging.ImageCodecInfo 此 Image 的 ImageCodecInfo。
encoderParams 类型:System.Drawing.Imaging.EncoderParameters 用于该 Image 的 EncoderParameters。
步骤:
①获得编码器的函数,
ImageCodecInfo GetEncoderInfo(String mimeType)
{ int j; ImageCodecInfo[] encoders; encoders = ImageCodecInfo.GetImageEncoders(); for(j = 0; j < encoders.Length; ++j) { if(encoders[j].MimeType == mimeType) return encoders[j]; } return null; }
可以直接复制过去使用。
②获取编码器
ImageCodecInfo myImageCodecInfo;
//获得JPEG格式的编码器
myImageCodecInfo = GetEncoderInfo("image/jpeg");
③设置图像质量
System.Drawing.Imaging.Encoder myEncoder;EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
// for the Quality parameter category.
myEncoder = System.Drawing.Imaging.Encoder.Quality;
// EncoderParameter object in the array.
myEncoderParameters = new EncoderParameters(1);
//设置质量 数字越大质量越好,但是到了一定程度质量就不会增加了,MSDN上没有给范围,只说是32为非负整数
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
④保存图像
bitmap.Save(@"D:\Users\Administrator\Desktop\Piexl1.jpeg", myImageCodecInfo, myEncoderParameters);
MSDN上的给的例子:
using System;using System.Drawing;using System.Drawing.Imaging;class Example_SetJPEGQuality{ public static void Main() { Bitmap myBitmap; ImageCodecInfo myImageCodecInfo; Encoder myEncoder; EncoderParameter myEncoderParameter; EncoderParameters myEncoderParameters; // Create a Bitmap object based on a BMP file. myBitmap = new Bitmap("Shapes.bmp"); // Get an ImageCodecInfo object that represents the JPEG codec. myImageCodecInfo = GetEncoderInfo("image/jpeg"); // Create an Encoder object based on the GUID // for the Quality parameter category. myEncoder = 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. myEncoderParameters = new EncoderParameters(1); // Save the bitmap as a JPEG file with quality level 25. myEncoderParameter = new EncoderParameter(myEncoder, 25L); myEncoderParameters.Param[0] = myEncoderParameter; myBitmap.Save("Shapes025.jpg", myImageCodecInfo, myEncoderParameters); // Save the bitmap as a JPEG file with quality level 50. myEncoderParameter = new EncoderParameter(myEncoder, 50L); myEncoderParameters.Param[0] = myEncoderParameter; myBitmap.Save("Shapes050.jpg", myImageCodecInfo, myEncoderParameters); // Save the bitmap as a JPEG file with quality level 75. myEncoderParameter = new EncoderParameter(myEncoder, 75L); myEncoderParameters.Param[0] = myEncoderParameter; myBitmap.Save("Shapes075.jpg", myImageCodecInfo, myEncoderParameters); } private static ImageCodecInfo GetEncoderInfo(String mimeType) { int j; ImageCodecInfo[] encoders; encoders = ImageCodecInfo.GetImageEncoders(); for(j = 0; j < encoders.Length; ++j) { if(encoders[j].MimeType == mimeType) return encoders[j]; } return null; }}
0 0
- c# GDI+ Image.Save()或者Bitmap.Save()方法保存高质量图片
- GDI+ BitMap save 保存图像
- C# 保存excel 问题 ,save 方法
- System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”
- [VB.NET]Image.Save 生产黑色图片
- c# GDI+改变图片保存时的质量
- c# GDI+改变图片保存时的质量
- System.Drawing.Image.Save, A generic error occurred in GDI+.
- Image.Save()发生“GDI+ 中发生一般性错误”
- save方法
- 重写Ckeditor的Save按钮保存方法
- HibernateTemplate的save方法不能保存
- Hibernate4 save方法无法保存数据
- Hibernate save方法无法保存的问题
- save image in Database
- Save Image to UserDefaults
- save
- Save
- ssh的开发思路
- HttpClient,HttpUrlConectTion,Socket介绍
- Hadoop的安全模式——hadoop2.2.0的Kerberos的配置
- ADT在SDK Manager中出现问题Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list
- 装饰器模式笔记
- c# GDI+ Image.Save()或者Bitmap.Save()方法保存高质量图片
- GRANT 授权
- Web service是什么?
- JAVA中this用法小结
- nginx内置变量
- JAVA内存管理机制
- Eclipse快捷键大全
- 如何向妻子解释设计模式
- Xcode6中Apple LLVM 6.0 Error的解决办法