C# 影像處理(五)—— 圖片翻轉

來源:互聯網
上載者:User

 在我的那個程式裡面,圖片是可以實現對稱翻轉的,可是仔細想想的話,卻發覺其實也沒有什麼用,不過也說一下實現的原理好了。

   之前說過圖片處理很多時候都是基於對圖片每個像素裡面的值進行處理,所以這次的圖片翻轉的效果也是通過這個原理的。

   舉個例子吧,如果想實現圖片的左右翻轉的話,

    /// <summary>
    /// 將圖片進行翻轉處理
    /// </summary>
    /// <param name="mybm">原始圖片</param>
    /// <param name="width">原始圖片的長度</param>
    /// <param name="height">原始圖片的高度</param>

    /// <returns>經過翻轉後的圖片</returns>

    public Bitmap RevPic(Bitmap mybm, int width, int height)
    {
        Bitmap bm = new Bitmap(width, height);//初始化一個記錄經過處理後的圖片對象
        int x, y, z;//x,y是迴圈次數,z是用來記錄影素點的x座標的變化的
        Color pixel;

       

        for (y = height - 1; y >= 0; y--)
        {
             for (x = width - 1, z = 0; x >= 0; x--)
             {
                pixel = mybm.GetPixel(x, y);//擷取當前像素的值
                bm.SetPixel(z++, y, Color.FromArgb(pixel.R, pixel.G, pixel.B));//繪圖
             }
        }

 

        return bm;//返回經過翻轉後的圖片
    }

 

    具體的理解可能要通過畫圖,所以我這裡就沒有做這一步,不過如果在草稿紙上面去理解一下是應該沒有問題的。

 

    圖片有左右翻轉,當然也會有上下翻轉啦,其實原理是差不多的,實現的代碼如下,

    public Bitmap RevPic(Bitmap mybm, int width, int height)
    {
        Bitmap bm = new Bitmap(width, height);
        int x, y, z;
        Color pixel;

        for (x = 0; x < width; x++)

        {
            for (y = height - 1, z = 0; y >= 0; y--)
            {
                pixel = mybm.GetPixel(x, y);//擷取當前像素的值
                bm.SetPixel(x, z++, Color.FromArgb(pixel.R, pixel.G, pixel.B));//繪圖
             }
        }

       

        return bm;//返回翻轉後的圖片
    }

 

    至於上面這段實現“上下翻轉”的代碼的部分注釋就不寫了,我這個人比較懶,如果有些不明白的話可以看回“左右翻轉”那裡的注釋,其實也是大同小異的。

    最後當然也是要通過一個pictureBox來把處理後的圖片給顯示出來啦!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.