您的位置:首页 > 编程语言 > C#

C#中图片切割,图片压缩,缩略图的生成

2012-06-08 11:05 309 查看
**//// <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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: