C#實(shí)現(xiàn)縮放和剪裁圖片的方法示例
本文實(shí)例講述了C#實(shí)現(xiàn)縮放和剪裁圖片的方法。分享給大家供大家參考,具體如下:
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace Project { class ImageOperation { /// <summary> /// Resize圖片 /// </summary> /// <param name="bmp">原始Bitmap </param> /// <param name="newW">新的寬度</param> /// <param name="newH">新的高度</param> /// <param name="Mode">保留著,暫時(shí)未用</param> /// <returns>處理以后的圖片</returns> public static Bitmap ResizeImage(Bitmap bmp, int newW, int newH, int Mode) { try { Bitmap b = new Bitmap(newW, newH); Graphics g = Graphics.FromImage(b); // 插值算法的質(zhì)量 g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel); g.Dispose(); return b; } catch { return null; } } /// <summary> /// 剪裁 -- 用GDI+ /// </summary> /// <param name="b">原始Bitmap</param> /// <param name="StartX">開始坐標(biāo)X</param> /// <param name="StartY">開始坐標(biāo)Y</param> /// <param name="iWidth">寬度</param> /// <param name="iHeight">高度</param> /// <returns>剪裁后的Bitmap</returns> public static Bitmap Cut(Bitmap b, int StartX, int StartY, int iWidth, int iHeight) { if (b == null) { return null; } int w = b.Width; int h = b.Height; if (StartX >= w || StartY >= h) { return null; } if (StartX + iWidth > w) { iWidth = w - StartX; } if (StartY + iHeight > h) { iHeight = h - StartY; } try { Bitmap bmpOut = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmpOut); g.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel); g.Dispose(); return bmpOut; } catch { return null; } } } }
目標(biāo)其實(shí)都是new Rectangle(0, 0, iWidth, iHeight)
,縮放算法把整個(gè)原始圖都往目標(biāo)區(qū)域里塞new Rectangle(0, 0, bmp.Width, bmp.Height)
,而剪裁只是把原始區(qū)域上等寬等高的那個(gè)區(qū)域new Rectangle(StartX, StartY, iWidth, iHeight)1:1的塞到目標(biāo)區(qū)域里。
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#圖片操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》及《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》
希望本文所述對大家C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#實(shí)例代碼之抽獎(jiǎng)升級(jí)版可以經(jīng)表格數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫,抽獎(jiǎng)設(shè)置,補(bǔ)抽
這篇文章主要介紹了C#實(shí)例代碼之抽獎(jiǎng)升級(jí)版可以經(jīng)表格數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫,抽獎(jiǎng)設(shè)置,補(bǔ)抽 的相關(guān)資料,需要的朋友可以參考下2016-01-01Unity技術(shù)手冊之Slider滑動(dòng)器使用實(shí)例詳解
這篇文章主要為大家介紹了Unity技術(shù)手冊之Slider滑動(dòng)器使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Unity實(shí)現(xiàn)識(shí)別圖像中主體及其位置
EasyDL基于飛槳開源深度學(xué)習(xí)平臺(tái),面向企業(yè)AI應(yīng)用開發(fā)者提供零門檻AI開發(fā)平臺(tái),實(shí)現(xiàn)零算法基礎(chǔ)定制高精度AI模型。本文將利用Unity和EasyDL實(shí)現(xiàn)識(shí)別圖像中主體及其位置,感興趣的可以了解一下2022-02-02C#字符串如何提取數(shù)值(帶小數(shù)點(diǎn))
這篇文章主要介紹了C#字符串如何提取數(shù)值問題(帶小數(shù)點(diǎn)),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05如何在datatable中使用groupby進(jìn)行分組統(tǒng)計(jì)
如何在datatable中進(jìn)行分組,并且計(jì)算分組后每組的數(shù)量,考慮了一下,可以使用LINQ來實(shí)現(xiàn)datatable分組,需要的朋友可以參考下2015-08-08DevExpress之TreeList用法實(shí)例總結(jié)
這篇文章主要介紹了DevExpress之TreeList用法,對于C#初學(xué)者有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08