• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            力為的技術(shù)博客

            聯(lián)系 聚合 管理
              154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
                                                      由彩色到黑白

            彩色圖轉(zhuǎn)換為灰度圖公式很簡(jiǎn)單:
            Y=0.3RED+0.59GREEN+0.11 Blue

            用GDI+實(shí)現(xiàn)的方式由兩種:
            1. 直接用上述公式修改象素點(diǎn)
            2. 用ColorMatrix。

            下面是用ColorMatrix實(shí)現(xiàn)示例:

            using namespace Gdiplus;
                Image img(wszFileName);
                Graphics graphics(GetDC()
            ->GetSafeHdc());
                ColorMatrix cm
            = {0.3f0.3f0.3f00,
                    
            0.59f,0.59f,0.59f,00,
                    
            0.11f,0.11f,0.11f,00,
                    
            0,    0,    0,    10,
                    
            0,    0,    0,    01}
            ;
                ImageAttributes ia;
                ia.SetColorMatrix(
            &cm);

                
            float x = (float)img.GetWidth();
                
            float y = (float)img.GetHeight();
                graphics.DrawImage(
            &img, 
                    RectF(
            0.0f,0.0f,x,y,
                    
            0.0f,0.0f,x,y, 
                    UnitPixel,
                    
            &ia);

            效果圖:
             CToG_001.JPG
            程序下載
            posted on 2005-11-16 10:13 力為 閱讀(3391) 評(píng)論(9)  編輯 收藏 引用 所屬分類: Tools

            評(píng)論

            # re: [GDI+]由彩色到黑白 2005-11-16 11:05 沐楓
            能不能加上兩種方法的性能比較。

            一般情況下,ColorMatrix的性能比較差(如果直接改象素的程序?qū)懙暮玫脑挘?
            似乎只要用到ImageAttributes,GDI+性能就大幅下降。很明顯的一點(diǎn)就是:
            帶Alpha的圖片顯示
            就是比
            不帶Alpha而且ColorKey的圖片顯示
            來得快得多!  回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2005-11-16 17:29 力為
            To 沐楓 :
            我又看了一下文檔,MS說直接更改象素點(diǎn)比用color matrix慢很多。
            MS應(yīng)該是對(duì)的吧。 :)  回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2006-01-19 14:34 武志文
            GDI+,如果你把像素點(diǎn)改成用數(shù)組來做,肯定比你用getpiel速度要快N多倍.而colorMatrix 用的是數(shù)組方式來做的,肯定比直接用像素的快.至于數(shù)組跟colorMatrix 比,我沒試過.對(duì)GDI+有一定的了解,加msn:sillnet@hotmail.com  回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2006-04-06 15:41 wang
            我想把用數(shù)據(jù)采集卡掃描到的二位數(shù)組繪成灰度圖,請(qǐng)問怎么繪
            能幫幫我么,謝謝
            qq 187184137
            sunice21@126.com  回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2006-05-17 10:56 輪回
            getpixel肯定是不行的.用lockbits,方法如下:

            public static bool Invert0(Bitmap b)
            {
            BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            int stride = bmData.Stride;
            System.IntPtr Scan0 = bmData.Scan0;
            unsafe
            {
            byte * p = (byte *)(void *)Scan0;
            int nOffset = stride - b.Width*3;
            int nWidth = b.Width * 3;
            int h=b.Height;

            for(int y=0;y<h;++y)
            {
            for(int x=0; x < nWidth; ++x )
            {
            p[0] = (byte)(255-p[0]);
            ++p;
            }
            p += nOffset;
            }
            }
            b.UnlockBits(bmData);
            return true;
            }

              回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2006-11-09 09:34 jillzhang
            經(jīng)過測(cè)試,直接用數(shù)組比ColorMatrix要快一點(diǎn)  回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2007-05-07 12:01 smartpig
            請(qǐng)問可以把代碼發(fā)給我學(xué)習(xí)一下看看嗎?
            smartpig2008@qq.com 謝謝啦!  回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2007-11-22 19:58 firerabbit
            類似功能,我再CDialog中都沒有問題,為什么在Activex中就不工作了呢?
            誰有這方面的經(jīng)驗(yàn)?  回復(fù)  更多評(píng)論
              

            # re: [GDI+]由彩色到黑白 2007-11-22 20:00 firerabbit
            ia.SetColorMatrix(&cm);這一步老是不成功,返回值為2,我查了一下,是不正確的輸入?yún)?shù),誰遇到過類似情況?  回復(fù)  更多評(píng)論
              

            日韩精品久久久久久| 香港aa三级久久三级老师2021国产三级精品三级在 | 亚洲精品久久久www| 久久人搡人人玩人妻精品首页| 久久97久久97精品免视看| 91麻豆精品国产91久久久久久| 曰曰摸天天摸人人看久久久| 久久99精品免费一区二区| 久久免费视频6| 国产亚洲精品久久久久秋霞 | 国产精品久久久久久久久软件| 一级做a爰片久久毛片毛片| 热久久国产欧美一区二区精品| 久久久久久国产a免费观看不卡| 亚洲AⅤ优女AV综合久久久| 亚洲国产成人久久精品99| 97精品伊人久久久大香线蕉| 国产成人久久精品一区二区三区| 日韩一区二区久久久久久| 污污内射久久一区二区欧美日韩 | 久久香综合精品久久伊人| 亚洲伊人久久大香线蕉苏妲己| 蜜桃麻豆www久久| 国产精品热久久无码av| 久久人人青草97香蕉| 三级三级久久三级久久| 综合人妻久久一区二区精品| 国产精品视频久久| 99久久国产综合精品麻豆| 亚洲精品乱码久久久久久按摩| 2020国产成人久久精品| 怡红院日本一道日本久久 | 亚洲中文字幕无码久久综合网| 青春久久| 精品久久久久久久久免费影院| 久久97久久97精品免视看| 国产亚洲精午夜久久久久久| 精品久久综合1区2区3区激情| 国产福利电影一区二区三区,免费久久久久久久精| 99精品国产综合久久久久五月天| 伊人久久精品无码av一区|