最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)對圖片文件的壓縮、裁剪操作實例

 更新時間:2014年09月23日 16:27:57   投稿:shichen2014  
這篇文章主要介紹了C#實現(xiàn)對圖片文件的壓縮、裁剪操作,較為詳細的介紹了操作過程中用到的相關(guān)類文件及具體的操作步驟,是非常實用的技巧,需要的朋友可以參考下

本文實例講述了C#對圖片文件的壓縮、裁剪操作方法,在C#項目開發(fā)中非常有實用價值。分享給大家供大家參考。具體如下:

一般在做項目時,對圖片的處理,以前都采用在上傳時,限制其大小的方式,這樣帶來諸多不便。畢竟網(wǎng)站運維人員不一定會對圖片做處理,經(jīng)常超出大小限制,即使會使用圖片處理軟件的,也由于個人水平方面原因,處理效果差強人意。

于是采用C#為我們提供的圖像編輯功能,實現(xiàn)一站式上傳,通過程序生成所需大小、尺寸的目標(biāo)圖片。

具體步驟如下:

先說圖片壓縮:

第一步:需要讀取一個圖片文件,讀取方法:

// <param name="ImageFilePathAndName">圖片文件的全路徑名稱</param> 
public Image ResourceImage =Image.FromFile(ImageFilePathAndName); 

說明:

Image類:引用自System.Drawing,為源自 Bitmap 和 Metafile 的類提供功能的抽象基類。

主要屬性:Size->獲取此圖像的以像素為單位的寬度和高度。

PhysicalDimension->獲取此圖像的寬度和高度(如果該圖像是位圖,以像素為單位返回寬度和高度。如果該圖像是圖元文件,則以0.01 毫米為單位返回寬度和高度。)。

PixelFormat->獲取此 Image 的像素格式。

Height、Width->獲取此 Image 的高度、寬度(以像素為單位)。

主要方法:FromFile(String)->從指定的文件創(chuàng)建 Image。

FromStream(Stream)->從指定的數(shù)據(jù)流創(chuàng)建 Image。

Save(String fileName)->將該 Image 保存到指定的文件或流。

Save(Stream, ImageFormat)->將此圖像以指定的格式保存到指定的流中。

Save(String, ImageFormat)->將此 Image 以指定格式保存到指定文件。

更多屬性和方法說明請點擊。

第二步,生成縮略圖,并且將原圖內(nèi)容按指定大小繪制到目標(biāo)圖片。

/// <summary> 
/// 生成縮略圖重載方法1,返回縮略圖的Image對象 
/// </summary> 
/// <param name="Width">縮略圖的寬度</param> 
/// <param name="Height">縮略圖的高度</param> 
/// <returns>縮略圖的Image對象</returns> 
public Image GetReducedImage(int Width, int Height) 
{ 
  try 
  { 
 //用指定的大小和格式初始化Bitmap類的新實例 
 Bitmap bitmap = new Bitmap(Width, Height, PixelFormat.Format32bppArgb); 
 //從指定的Image對象創(chuàng)建新Graphics對象 
 Graphics graphics = Graphics.FromImage(bitmap); 
 //清除整個繪圖面并以透明背景色填充 
 graphics.Clear(Color.Transparent); 
 //在指定位置并且按指定大小繪制原圖片對象 
 graphics.DrawImage(ResourceImage, new Rectangle(0, 0, Width, Height)); 
 return bitmap; 
  } 
  catch (Exception e) 
  { 
 ErrMessage = e.Message; 
 return null; 
  } 
} 

說明:

1、Bitmap類

引用自System.Drawing,封裝 GDI+ 位圖,此位圖由圖形圖像及其特性的像素數(shù)據(jù)組成。Bitmap 是用于處理由像素數(shù)據(jù)定義的圖像的對象。

關(guān)于封裝圖像的對象,詳細介紹可參看官方文檔:http://msdn.microsoft.com/zh-cn/library/system.drawing.bitmap.aspx。

2、Graphics類

引用自System.Drawing,(處理圖像的對象),封裝一個 GDI+ 繪圖圖面。

關(guān)于Graphics類可點此查看官方教程:http://msdn.microsoft.com/zh-cn/library/system.drawing.graphics.aspx

第三步,保存

第二步操作中返回的Image對象,暫時命名為:iImage:

iImage.Save(pathAndName, System.Drawing.Imaging.ImageFormat.Jpeg); 

以上是壓縮操作,做了下試驗,101k的圖片,經(jīng)過壓縮后是57k。這個應(yīng)該和尺寸有關(guān)系。

以下是圖片裁剪,其實原理和上面相似,無非也就是對圖片進行重畫操作。

/// <summary> 
/// 截取圖片方法 
/// </summary> 
/// <param name="url">圖片地址</param> 
/// <param name="beginX">開始位置-X</param> 
/// <param name="beginY">開始位置-Y</param> 
/// <param name="getX">截取寬度</param> 
/// <param name="getY">截取長度</param> 
/// <param name="fileName">文件名稱</param> 
/// <param name="savePath">保存路徑</param> 
/// <param name="fileExt">后綴名</param> 
public static string CutImage(string url, int beginX, int beginY, int getX, int getY, string fileName, string savePath, string fileExt) 
{ 
  if ((beginX < getX) && (beginY < getY)) 
  { 
 Bitmap bitmap = new Bitmap(url);//原圖 
if (((beginX + getX) <= bitmap.Width) && ((beginY + getY) <= bitmap.Height)) 
 { 
   Bitmap destBitmap = new Bitmap(getX, getY);//目標(biāo)圖 
   Rectangle destRect = new Rectangle(0, 0, getX, getY);//矩形容器 
   Rectangle srcRect = new Rectangle(beginX, beginY, getX, getY); 

   Graphics.FromImage(destBitmap); 
            Graphics.DrawImage(bitmap, destRect, srcRect, GraphicsUnit.Pixel); 
    
   ImageFormat format = ImageFormat.Png; 
   switch (fileExt.ToLower()) 
   { 
 case "png": 
   format = ImageFormat.Png; 
   break; 
 case "bmp": 
   format = ImageFormat.Bmp; 
   break; 
 case "gif": 
   format = ImageFormat.Gif; 
   break; 
   } 
   destBitmap.Save(savePath + "http://" + fileName , format); 
   return savePath + "\\" + "*" + fileName.Split('.')[0] + "." + fileExt; 
 } 
 else 
 { 
   return "截取范圍超出圖片范圍"; 
 } 
  } 
  else 
  { 
 return "請確認(beginX < getX)&&(beginY < getY)"; 
  } 
} 

說明:

Rectangle類:矩形,詳情可參考官方文檔:http://msdn.microsoft.com/zh-cn/library/system.windows.shapes.rectangle(v=vs.85).aspx

以上就是裁剪一個圖片文件的示例代碼。

本文所使用代碼,是項目中真實代碼,已經(jīng)過測試。

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • C#操作Access通用類實例

    C#操作Access通用類實例

    這篇文章主要介紹了C#操作Access通用類,實例分析了C#操作access的各種常見技巧,非常具有實用價值,需要的朋友可以參考下
    2015-06-06
  • C#實現(xiàn)Dev Grid拖拽移動行的方法

    C#實現(xiàn)Dev Grid拖拽移動行的方法

    這篇文章主要介紹了C#實現(xiàn)Dev Grid拖拽移動行的方法,可實現(xiàn)Dev Grid拖拽移動行的效果,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • 將Qt項目升級到Qt6吐血經(jīng)驗總結(jié)

    將Qt項目升級到Qt6吐血經(jīng)驗總結(jié)

    很多朋友向小編反饋將Qt項目升級到Qt6頻繁出錯,該如何處理呢,今天小編給大家?guī)砹藢t項目升級到Qt6吐血經(jīng)驗總結(jié),感興趣的朋友一起看看吧
    2021-07-07
  • Unity3D控件Easytouch控制主角移動

    Unity3D控件Easytouch控制主角移動

    這篇文章主要為大家詳細介紹了Unity3D控件Easytouch控制主角移動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#隨機數(shù)生成字母金字塔

    C#隨機數(shù)生成字母金字塔

    這篇文章主要為大家詳細介紹了C#隨機數(shù)生成字母金字塔,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Unity實現(xiàn)汽車前后輪倒車軌跡計算

    Unity實現(xiàn)汽車前后輪倒車軌跡計算

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)汽車前后輪倒車軌跡計算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C#主線程堵塞問題的解決方案

    C#主線程堵塞問題的解決方案

    這篇文章主要介紹了C#主線程堵塞問題的解決方案,在C#中,異步方法和async/await關(guān)鍵字是用來解決主線程阻塞的有效方式,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-03-03
  • C#檢查鍵盤大小寫鎖定狀態(tài)的方法

    C#檢查鍵盤大小寫鎖定狀態(tài)的方法

    這篇文章主要介紹了C#檢查鍵盤大小寫鎖定狀態(tài)的方法,涉及C#鍵盤操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • c#中的正則表達式和日期的使用示例

    c#中的正則表達式和日期的使用示例

    在?C#?中,正則表達式(Regular?Expressions)是一種強大的文本處理工具,用于執(zhí)行各種字符串搜索、替換和驗證任務(wù),這篇文章主要介紹了c#中的正則表達式和日期的使用示例,需要的朋友可以參考下
    2024-07-07
  • C#爬蟲基礎(chǔ)之HttpClient獲取HTTP請求與響應(yīng)

    C#爬蟲基礎(chǔ)之HttpClient獲取HTTP請求與響應(yīng)

    這篇文章介紹了C#使用HttpClient獲取HTTP請求與響應(yīng)的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論

厦门市| 永德县| 盘山县| 台南市| 新宁县| 长兴县| 三台县| 黑水县| 大渡口区| 大方县| 苍梧县| 合江县| 奈曼旗| 泰顺县| 灵丘县| 郓城县| 汪清县| 北宁市| 富川| 定安县| 涞源县| 崇仁县| 龙井市| 徐水县| 柳河县| 子长县| 山东| 司法| 旌德县| 驻马店市| 潼关县| 岳西县| 开平市| 铜梁县| 方正县| 津市市| 荥阳市| 屯留县| 柳江县| 西畴县| 太康县|