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

C#反色處理及其效率問題分析

 更新時間:2015年06月12日 10:48:29   作者:天藍(lán)  
這篇文章主要介紹了C#反色處理及其效率問題分析,實例分析了C#反色處理問題的技巧及相關(guān)效率問題,需要的朋友可以參考下

本文實例分析了C#反色處理及其效率問題。分享給大家供大家參考。具體分析如下:

網(wǎng)上很多這方面的資料,??吹降陌姹救缦旅妫?br />

public Bitmap RePic(Bitmap thispic, int width, int height) {
Bitmap bm = new Bitmap(width, height);//初始化一個記錄后的圖片的對象
int x, y, resultR, resultG, resultB;
Color pixel;
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
pixel = thispic.GetPixel(x, y); //獲取當(dāng)前坐標(biāo)的像素值
resultR = 255 - pixel.R; //反紅
resultG = 255 - pixel.G; //反綠
resultB = 255 - pixel.B; //反藍(lán)
bm.SetPixel(x, y, Color.FromArgb(resultR, resultG, resultB)); //繪圖
}
}
return bm; //返回經(jīng)過處理后的圖片
}

上述代碼執(zhí)行沒有問題,但效率存在很大一個問題,執(zhí)行起來很慢,測試了一下1920 x 1080分辨率,執(zhí)行時間8秒左右;2560 x 1920分辨率,執(zhí)行時間達(dá)到了15秒左右,當(dāng)然小圖片處理起來要快一些,當(dāng)然也與CPU配置有關(guān)。

后來又嘗試了另外一種方法,利用System.Drawing.Imaging 中的BitmapData 和LockBits方法,其中用到了指針,代碼如下:

public Bitmap reversePic(Bitmap thispic) {
Bitmap src = new Bitmap(Image.FromHbitmap(thispic.GetHbitmap())); // 加載圖像
BitmapData srcdat = src.LockBits(new Rectangle(Point.Empty, src.Size), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); // 鎖定位圖
unsafe // 不安全代碼
{
byte* pix = (byte*)srcdat.Scan0; // 像素首地址
for (int i = 0; i < srcdat.Stride * srcdat.Height; i++)
pix[i] = (byte)(255 - pix[i]);
}
src.UnlockBits(srcdat); // 解鎖
return src;
}

經(jīng)測試效率明顯提高了許多,2560 x 1920分辨率,執(zhí)行時間不到1秒,看來用指針操作果然效率會很高,但C#中對指針的操作視為不安全的,使用unsafe關(guān)鍵字后,編譯出錯,得將編譯器選項設(shè)置為允許對使用 unsafe 關(guān)鍵字的代碼進(jìn)行編譯。方法如下:

在 Visual Studio 開發(fā)環(huán)境中設(shè)置此編譯器選項

1. 打開項目的 “屬性”頁。

2. 單擊 “生成”屬性頁。

3. 選中 “允許不安全代碼”復(fù)選框。

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

相關(guān)文章

  • C#連接Mysql實現(xiàn)增刪改查的操作

    C#連接Mysql實現(xiàn)增刪改查的操作

    在IT行業(yè)中,數(shù)據(jù)庫連接是應(yīng)用程序開發(fā)中的重要環(huán)節(jié),尤其是在使用C#進(jìn)行Windows或者Web應(yīng)用開發(fā)時,經(jīng)常需要與各種數(shù)據(jù)庫進(jìn)行交互,其中就包括廣泛使用的MySQL,本篇將詳細(xì)講解如何使用C#語言來連接MySQL數(shù)據(jù)庫,以實現(xiàn)數(shù)據(jù)的讀取、寫入和其他操作
    2024-09-09
  • C#多線程TPL模式下使用HttpClient

    C#多線程TPL模式下使用HttpClient

    這篇文章介紹了C#多線程TPL模式下使用HttpClient的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C# 實現(xiàn)特殊字符快速轉(zhuǎn)碼

    C# 實現(xiàn)特殊字符快速轉(zhuǎn)碼

    這篇文章主要介紹了C# 實現(xiàn)特殊字符快速轉(zhuǎn)碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 利用WCF雙工模式實現(xiàn)即時通訊

    利用WCF雙工模式實現(xiàn)即時通訊

    這篇文章主要介紹了利用WCF雙工模式實現(xiàn)即時通訊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#操作INI文件的示例代碼

    C#操作INI文件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#操作INI文件的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以跟隨上班一起學(xué)習(xí)一下
    2023-12-12
  • c#掃描圖片去黑邊(掃描儀去黑邊)

    c#掃描圖片去黑邊(掃描儀去黑邊)

    最近項目遇到一個問題,需要對掃描出來的圖片進(jìn)行去除黑邊,下面是實現(xiàn)代碼,需要的朋友可以參考下
    2014-03-03
  • C#實現(xiàn)快速查詢文件的方法

    C#實現(xiàn)快速查詢文件的方法

    這篇文章介紹了C#實現(xiàn)快速查詢文件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C# WPF ListView控件的實例詳解

    C# WPF ListView控件的實例詳解

    這篇文章主要介紹了C# WPF ListView控件的實例詳解的相關(guān)資料,希望通過本能幫助到大家,讓大家掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Unity Shader實現(xiàn)裁切效果

    Unity Shader實現(xiàn)裁切效果

    這篇文章主要為大家詳細(xì)介紹了Unity Shader實現(xiàn)裁切效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#編程:List.ForEach與foreach循環(huán)的對比分析

    C#編程:List.ForEach與foreach循環(huán)的對比分析

    這篇文章主要介紹了C#編程:List.ForEach與foreach循環(huán)的對比分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論

慈溪市| 石屏县| 汽车| 册亨县| 宝兴县| 宽城| 吉首市| 辛集市| 棋牌| 泸定县| 江油市| 苍溪县| 兴国县| 吴桥县| 罗田县| 丰宁| 临武县| 岳阳市| 万安县| 娱乐| 浏阳市| 凯里市| 开江县| 双鸭山市| 旬阳县| 宜阳县| 伊川县| 礼泉县| 南澳县| 思茅市| 黔东| 满城县| 和硕县| 巍山| 宁陵县| 吉木乃县| 多伦县| 奉贤区| 游戏| 顺义区| 华蓥市|