C#中圖片切割,圖片壓縮,縮略圖生成的代碼
**//// <summary> /// 圖片切割函數 /// </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; }</pre><br />