欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#圖片切割、圖片壓縮、縮略圖生成代碼匯總

 更新時(shí)間:2021年09月01日 15:08:21   作者:李朝強(qiáng)  
這篇文章主要為大家匯總了C#圖片切割、圖片壓縮、縮略圖生成代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家整理了C#圖片切割、圖片壓縮、縮略圖生成的實(shí)現(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">輸出文件名,請(qǐng)用 .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;
 }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c#使用UTF-8編碼實(shí)現(xiàn)處理多語(yǔ)言文本

    c#使用UTF-8編碼實(shí)現(xiàn)處理多語(yǔ)言文本

    UTF-8編碼是現(xiàn)代應(yīng)用中處理多語(yǔ)言文本的首選,所以本文為大家詳細(xì)介紹了C#如何使用UTF-8編碼實(shí)現(xiàn)處理多語(yǔ)言文本,感興趣的小伙伴可以了解下
    2024-01-01
  • c#數(shù)據(jù)綁定之linq使用示例

    c#數(shù)據(jù)綁定之linq使用示例

    本實(shí)例以MS AdventureWorks2008Entities數(shù)據(jù)庫(kù)為基礎(chǔ),演示了LINQ TO ENTITY、LINQ TO ENTITYSQL和LINQ TO ENTITYCLIENT。
    2014-04-04
  • c#使用多線程的幾種方式示例詳解

    c#使用多線程的幾種方式示例詳解

    這篇文章主要介紹了c#使用多線程的幾種方式,通過(guò)示例學(xué)習(xí)c#的多線程使用方式,大家參考使用吧
    2014-01-01
  • C#使用foreach語(yǔ)句遍歷隊(duì)列(Queue)的方法

    C#使用foreach語(yǔ)句遍歷隊(duì)列(Queue)的方法

    這篇文章主要介紹了C#使用foreach語(yǔ)句遍歷隊(duì)列(Queue)的方法,涉及foreach語(yǔ)句的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#特性-對(duì)象集合初始化器介紹

    C#特性-對(duì)象集合初始化器介紹

    在寫(xiě)一些實(shí)體類的時(shí)候,我們往往在寫(xiě)構(gòu)造方法的時(shí)候思考很長(zhǎng)時(shí)間,除了一個(gè)無(wú)參構(gòu)造器外還在想需要寫(xiě)幾個(gè)構(gòu)造器呢?哪些參數(shù)是需要初始化的?,F(xiàn)在你再也不需要為這事煩惱了
    2014-12-12
  • C#繪制實(shí)時(shí)曲線的方法

    C#繪制實(shí)時(shí)曲線的方法

    這篇文章主要為大家詳細(xì)介紹了C#繪制實(shí)時(shí)曲線的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#實(shí)現(xiàn)跑馬燈效果的示例代碼

    C#實(shí)現(xiàn)跑馬燈效果的示例代碼

    跑馬燈效果,功能效果大家應(yīng)該都知道,就是當(dāng)我們的文字過(guò)長(zhǎng),整個(gè)頁(yè)面放不下的時(shí)候(一般用于公告等),可以讓它自動(dòng)實(shí)現(xiàn)來(lái)回滾動(dòng)。本文將利用C#實(shí)現(xiàn)這一效果,感興趣的可以了解一下
    2022-11-11
  • 算法練習(xí)之從String.indexOf的模擬實(shí)現(xiàn)開(kāi)始

    算法練習(xí)之從String.indexOf的模擬實(shí)現(xiàn)開(kāi)始

    這篇文章主要介紹了算法練習(xí)從String.indexOf的模擬實(shí)現(xiàn)開(kāi)始,需要的朋友可以參考下
    2014-12-12
  • C#路徑,文件,目錄及IO常見(jiàn)操作匯總

    C#路徑,文件,目錄及IO常見(jiàn)操作匯總

    這篇文章主要介紹了C#路徑,文件,目錄及IO常見(jiàn)操作,較為詳細(xì)的分析并匯總了C#關(guān)于路徑,文件,目錄及IO常見(jiàn)操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • .NET/C# 使用Stopwatch測(cè)量運(yùn)行時(shí)間

    .NET/C# 使用Stopwatch測(cè)量運(yùn)行時(shí)間

    這篇文章主要介紹了.NET/C# 使用Stopwatch測(cè)量運(yùn)行時(shí)間,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評(píng)論