//C#图片操作帮助类 public class ImageHelper { /// <summary> /// 生成缩略图 /// </summary> /// <param name="sourceFile">原始图片文件</param> /// <param name="quality">质量压缩比 (1-100,越大越清晰)</param> /// <param name="multiple">收缩倍数(1:原始比例,2:缩小两倍)</param> /// <param name="outputFile">输出文件名</param> /// <returns>成功返回true,失败则返回false</returns> public static bool getThumbnail(String sourceFile, long quality, int multiple, String outputFile) { try { long imageQuality = quality; Bitmap sourceImage = new Bitmap(sourceFile); ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg"); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; EncoderParameters myEncoderParameters = new EncoderParameters(1); EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, imageQuality); myEncoderParameters.Param[0] = myEncoderParameter; float xWidth = sourceImage.Width; float yWidth = sourceImage.Height; Bitmap newImage = new Bitmap((int)(xWidth / multiple), (int)(yWidth / multiple)); Graphics g = Graphics.FromImage(newImage); g.DrawImage(sourceImage, 0, 0, xWidth / multiple, yWidth / multiple); g.Dispose(); newImage.Save(outputFile, myImageCodecInfo, myEncoderParameters); return true; } catch { return false; } } /**/ /// <summary> /// 获取图片编码信息 /// </summary> 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; } /// <summary> /// 从大图中截取一部分图片 /// </summary> /// <param name="fromImagePath">来源图片地址</param> /// <param name="offsetX">从偏移X坐标位置开始截取</param> /// <param name="offsetY">从偏移Y坐标位置开始截取</param> /// <param name="toImagePath">保存图片地址</param> /// <param name="width">保存图片的宽度</param> /// <param name="height">保存图片的高度</param> /// <returns></returns> public static void CaptureImage(string fromImagePath, int offsetX, int offsetY, string toImagePath, int width, int height) { //原图片文件 Image fromImage = Image.FromFile(fromImagePath); //创建新图位图 Bitmap bitmap = new Bitmap(width, height); //创建作图区域 Graphics graphic = Graphics.FromImage(bitmap); //截取原图相应区域写入作图区 graphic.DrawImage(fromImage, 0, 0, new Rectangle(offsetX, offsetY, width, height), GraphicsUnit.Pixel); //从作图区生成新图 Image saveImage = Image.FromHbitmap(bitmap.GetHbitmap()); //保存图片 saveImage.Save(toImagePath, ImageFormat.Png); //释放资源 saveImage.Dispose(); graphic.Dispose(); bitmap.Dispose(); } }
调用方式
string source = "D:\\1.png"; string pathPerc = "D:\\2.png"; ImageHelper.getThumbnail(source, 100, 5, pathPerc); ImageHelper.CaptureImage(source, 0, 0, pathPerc, 1000, 800);