您的位置:首页 > 博客中心 > 电脑问题 >

C#图片切割、图片压缩、缩略图生成

时间:2022-03-18 01:50

C#图片切割、图片压缩、缩略图生成的实现代码 /// 图片切割函数  /// </summary>  /// <param name="sourceFile">原始图片文件</param>  /// <param name="xNum">在X轴上的切割数量</param>  /// <param name="yNum">在Y轴上的切割数量</param>  /// <param name="quality">质量压缩比</param>  /// <param name="outputFile">输出文件名,不带后缀</param>  /// <returns>成功返回true,失败则返回false</returns>  public static bool imageCut(String sourceFile, int xNum, int yNum, long quality, String outputFile)  {   try   {    long imageQuality      = quality;    Bitmap sourceImage      = new Bitmap(sourceFile);    ImageCodecInfo myImageCodecInfo   = GetEncoderInfo("image/jpeg");    Encoder myEncoder      = Encoder.Quality;    EncoderParameters myEncoderParameters = new EncoderParameters(1);    EncoderParameter myEncoderParameter  = new EncoderParameter(myEncoder, imageQuality);    myEncoderParameters.Param[0]    = myEncoderParameter;    float xWidth        = sourceImage.Width / xNum;    float yWidth        = sourceImage.Height / yNum;    String outputImage      = "";          for (int countY = 0; countY < yNum; countY++)     for (int countX = 0; countX < xNum; countX++)     {         RectangleF cloneRect    = new RectangleF(countX * xWidth, countY * yWidth, xWidth, yWidth);      Bitmap newImage     = sourceImage.Clone(cloneRect, PixelFormat.Format24bppRgb);      outputImage      = outputFile + countX + countY + ".jpg";      newImage.Save(outputImage, myImageCodecInfo, myEncoderParameters);        }    return true;   }   catch   {    return false;   }     }  #endregion imageCut     imageCompress #region imageCompress  /**//// <summary>  /// 图片压缩函数  /// </summary>  /// <param name="sourceFile">原始图片文件</param>  /// <param name="quality">质量压缩比</param>  /// <param name="ouputFile">输出文件名,请用 .jpg 后缀 </param>  /// <returns>成功返回true,失败则返回false</returns>  public static bool imageCompress(String sourceFile,long quality,String outputFile)  {   try   {    long imageQuality      = quality;    Bitmap sourceImage      = new Bitmap(sourceFile);    ImageCodecInfo myImageCodecInfo  = GetEncoderInfo("image/jpeg");    Encoder myEncoder      = Encoder.Quality;    EncoderParameters myEncoderParameters = new EncoderParameters(1);    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, imageQuality);    myEncoderParameters.Param[0]   = myEncoderParameter;         sourceImage.Save(outputFile, myImageCodecInfo, myEncoderParameters);    return true;      }   catch   {    return false;   }     }  #endregion imageCompress     getThumImage#region getThumImage  /**//// <summary>  /// 生成缩略图  /// </summary>  /// <param name="sourceFile">原始图片文件</param>  /// <param name="quality">质量压缩比</param>  /// <param name="multiple">收缩倍数</param>  /// <param name="outputFile">输出文件名</param>  /// <returns>成功返回true,失败则返回false</returns>  public static bool getThumImage(String sourceFile, long quality, int multiple, String outputFile)  {   try   {    long imageQuality      = quality;    Bitmap sourceImage      = new Bitmap(sourceFile);    ImageCodecInfo myImageCodecInfo  = GetEncoderInfo("image/jpeg");    Encoder myEncoder      = 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;   }  }  #endregion getThumImage     ImageCodecInfo#region ImageCodecInfo  /**//// <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;  }

 

本类排行

今日推荐

热门手游