C# 實現(xiàn)馬賽克


說到馬賽克,大家一定不陌生熊咽。(此處略去1萬字)
但是該如何利用編程語言實現(xiàn)呢?
使用工具:
C#
Visual Studio 2015 Community

原理:
大家都知道闹丐,一張圖片是由一個一個像素組成横殴。這些像素呢逐次排列,就好像方格紙一樣卿拴。(密集恐懼癥慎入) 每個格子都是一個特定的顏色衫仑。



那么怎么實現(xiàn)馬賽克呢?說白了呢堕花,就是實現(xiàn)下面的一個轉(zhuǎn)換(每個字母代表一個像素文狱,假設(shè)馬賽克的范圍為2):



間隔選取像素點(diǎn)(如ACE...),接著填充至周圍的格子中缘挽。
實戰(zhàn):
首先要用到System.Drawing

一般創(chuàng)建Win窗口程序時都已經(jīng)引用了瞄崇。我們要用到里面的Bitmap
類來進(jìn)行圖片的讀取和寫入操作。
構(gòu)造一個函數(shù)

public static Bitmap imgMosaic(Bitmap img, int a)  //img為輸入的圖像壕曼,a為馬賽克的范圍
{
  for (int h = 0; h < img.Height; h += a)         //兩層循環(huán)苏研,遍歷每一個間隔的像素點(diǎn)
  {
    for (int w = 0; w < img.Width; w += a)      
    {
        Color xxx = img.GetPixel(w, h);         //獲取顏色
        for (int x = w; (x < w + a && x < img.Width); x++)        //另一層循環(huán),填充顏色
        {
            for (int y = h; (y < h + a && y < img.Height); y++)
            {
                img.SetPixel(x, y, xxx);
            }
        }
     }
  }
  return img;
}    

至于效果么摹蘑。轧飞。你們自己感受一下:



其實挺好了塘安,已經(jīng)有馬賽克的效果了援奢。
我又想:怎么讓馬賽克的效果更好呢集漾?問題是ACE這樣的像素可能不能代表周圍的一圈像素。
于是纬霞,我們可以取ABGH的RGB平均值再填入這些像素中诗芜。代碼如下

public static Bitmap imgMosaic2(Bitmap img, int a)
{
  for (int h = 0; h < img.Height; h += a)
  {
    for (int w = 0; w < img.Width; w += a)
    {
        int avgR = 0, avgG = 0, avgB = 0;
        int count = 0;
        for (int x = w; (x < w + a && x < img.Width); x++)
        {
            for (int y = h; (y < h + a && y < img.Height); y++)
            {
                Color pix = img.GetPixel(x, y);
                avgR += pix.R;
                avgG += pix.G;
                avgB += pix.B;
                count++;
            }
        }
        avgR = avgR / count;
        avgG = avgG / count;
        avgB = avgB / count;
        for (int x = w; (x < w + a && x < img.Width); x++)
        {
            for (int y = h; (y < h + a && y < img.Height); y++)
            {
                Color newColor = Color.FromArgb(avgR, avgG, avgB);
                img.SetPixel(x, y, newColor);
            }
        }
    }
  }
  return img;
}

再來感受一下效果:



瞬間感覺好多了孩哑。
至于導(dǎo)入圖片:

image1 = new Bitmap(@"C:\img.jpg", true);    //@后換成自己想要的路徑就可以了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末横蜒,一起剝皮案震驚了整個濱河市销凑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斗幼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渠羞,居然都是意外死亡智哀,警方通過查閱死者的電腦和手機(jī)瓷叫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門摹菠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來次氨,“玉大人煮寡,你說我怎么就攤上這事幸撕。” “怎么了律胀?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵炭菌,是天一觀的道長。 經(jīng)常有香客問我娃兽,道長菇民,這世上最難降的妖魔是什么投储? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任第练,我火速辦了婚禮玛荞,結(jié)果婚禮上娇掏,老公的妹妹穿的比我還像新娘勋眯。我一直安慰自己婴梧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布客蹋。 她就那樣靜靜地躺著塞蹭,像睡著了一般讶坯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上漱办,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天娩井,我揣著相機(jī)與錄音洞辣,去河邊找鬼。 笑死屋彪,一個胖子當(dāng)著我的面吹牛畜挥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播婴谱,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蟹但,長吁一口氣:“原來是場噩夢啊……” “哼躯泰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起华糖,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤麦向,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后客叉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诵竭,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年兼搏,在試婚紗的時候發(fā)現(xiàn)自己被綠了卵慰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡佛呻,死狀恐怖裳朋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吓著,我是刑警寧澤鲤嫡,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站绑莺,受9級特大地震影響暖眼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纺裁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一罢荡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧对扶,春花似錦、人聲如沸惭缰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漱受。三九已至络凿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昂羡,已是汗流浹背絮记。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虐先,地道東北人怨愤。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蛹批,于是被迫代替她去往敵國和親撰洗。 傳聞我的和親對象是個殘疾皇子篮愉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容