C#圖片切割、圖片壓縮、縮略圖生成代碼匯總
更新時間:2021年09月01日 15:08:21 作者:李朝強
這篇文章主要為大家匯總了C#圖片切割、圖片壓縮、縮略圖生成代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文為大家整理了C#圖片切割、圖片壓縮、縮略圖生成的實現(xiàn)代碼,大家可以收藏,方便以后使用,具體內(nèi)容如下
/// 圖片切割函數(shù)
/// </summary>
/// <param name="sourceFile">原始圖片文件</param>
/// <param name="xNum">在X軸上的切割數(shù)量</param>
/// <param name="yNum">在Y軸上的切割數(shù)量</param>
/// <param name="quality">質(zhì)量壓縮比</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>
/// 圖片壓縮函數(shù)
/// </summary>
/// <param name="sourceFile">原始圖片文件</param>
/// <param name="quality">質(zhì)量壓縮比</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">質(zhì)量壓縮比</param>
/// <param name="multiple">收縮倍數(shù)</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;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#使用Dictionary<string, string>拆分字符串與記錄log方法
這篇文章介紹了Dictionary<string, string>拆分字符串與記錄log的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
C#中Activator.CreateInstance()方法用法分析
這篇文章主要介紹了C#中Activator.CreateInstance()方法用法,實例分析了C#中Activator.CreateInstance()方法的功能、定義及使用技巧,需要的朋友可以參考下2015-03-03
C#實現(xiàn)將Doc文檔轉(zhuǎn)換成rtf格式的方法示例
這篇文章主要介紹了C#實現(xiàn)將Doc文檔轉(zhuǎn)換成rtf格式的方法,結(jié)合實例形式分析了C#針對word文件的讀取及文檔格式轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
C++調(diào)用C#的DLL程序?qū)崿F(xiàn)方法
本文通過例子,講述了C++調(diào)用C#的DLL程序的方法,作出了以下總結(jié),具有一定的參考價值,下面就讓我們一起來學習吧2015-10-10
C# Record構(gòu)造函數(shù)的行為更改詳解
C# 9 中的record類型是僅具有只讀屬性的輕量級、不可變數(shù)據(jù)類型(或輕量級類),下面這篇文章主要給大家介紹了關(guān)于C# Record構(gòu)造函數(shù)的行為更改的相關(guān)資料,需要的朋友可以參考下2021-08-08

