• <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>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Bitmap重要屬性

            轉載自:http://blog.csdn.net/repeaterbin/article/details/3979272

            Bitmap重要屬性整理
            2009-02-24 14:13

            Bitmap:

            (1)     public Bitmap (int width,int height,int stride,     PixelFormat format,IntPtr scan0)

            用指定的大小、像素格式和像素數據初始化 Bitmap 類的新實例。

            (2)     LockBits():,就是把圖像的內存區域根據格式鎖定,拿到那塊內存的首地址。這樣就可以直接改寫這段內存了。這個方法的設計是挺好,可惜都是C++作為源泉來的,.NET Framework里面根本就不推薦用指針,需要用Marshal.Copy把內容Copy到一個byte數組里面,然后處理完了再Copy回去。

            (3)     UnlockBits():從系統內存解鎖此 Bitmap。

             

            BitmapData:位圖圖像的屬性

            (1)   Height獲取或設置 Bitmap 對象的像素高度。有時也稱作掃描行數。

            (2)   PixelFormat: 獲取或設置返回此 BitmapData 對象的 Bitmap 對象中像素信息的格式。

            (3)   Reserved: 保留。不要使用。

            (4)   Scan0: 獲取或設置位圖中第一個像素數據的地址。它也可以看成是位圖中的第一個掃描行。

            (5)   Stride: 獲取或設置 Bitmap 對象的跨距寬度(也稱為掃描寬度)。

            Stride:跨距是單行像素(一個掃描行)的寬度,舍入為一個 4 字節的邊界。跨距總是大于或等于實際像素寬度。如果跨距為正,則位圖自頂向下。如果跨距為負,則位圖顛倒。Stride是指圖像每一行需要占用的字節數。根據BMP格式的標準,Stride一定要是4的倍數。據個例子,一幅1024*768的24bppRgb的圖像,每行有效的像素信息應該是1024*3 = 3072。因為已經是4的倍數,所以Stride就是3072。那么如果這幅圖像是35*30,那么一行的有效像素信息是105,但是105不是4的倍數,所以填充空字節,Stride應該是108。這一行計算出來的offset就是3。一要注意必須是4的倍數,二單位是字節!

            (6)   Width: 獲取或設置 Bitmap 對象的像素寬度。這也可以看作是一個掃描行中的像素數。

             

            PixelFormat:

            (1)     Format24bppRgb,也就是24位色。在這種格式下3個字節表示一種顏色,也就是我們通常所知道的R,G,B,所以每個字節表示顏色的一個分量。

            (2)     Format32bppArgb,除了RGB,在圖像中還存在一個通道,叫做A。這個A就是用來描述當前像素是透明,半透明,還是全透明的分量。這個通道是2個叫Catmull和Smith在上世紀70年代初發明的。通過這個分量,我們可以進行alpha混合的一些計算。從而使表面的圖像和背景圖像混合,從而造成透明半透明的效果。在這種格式下A作為一個byte,取值可以從0到255,那么0表示圖像完全透明,則完全不可見,255則表示圖像完全不透明。每個像素都可以實現這種透明或者半透明的效果。更詳細解釋可以參考http://en.wikipedia.org/wiki/Alpha_compositing,或者去買本數字圖像處理的書回來看。

            (3)     Format32bppPArgb,這叫做premultiplied alpha,就是說在RGB分量里面,alpha分量的數據已經被預先乘進去了。比如說,一個半透明的紅色點,在ARGB下,矢量是(255,0,0,128),而在PARGB下就變成了(128,0,0,128)。這是為了不要每次都做乘法。

            (4)     Bitmap保存成為一個文件,那么必須用png格式,才能夠保存alpha通道的信息。如果你存為JPG/BMP/GIF,那么alpha通道的信息將會被丟失。如果存為BMP,那么文件格式將變成Format32bppRgb,其中1個字節不再使用;如果保存為JPEG,那么是Format24bppRgb;存為GIF,格式將變成Format8bppIndexed。根據標準,BMP/JPG本來就不支持透明通道,所以沒有可能保留透明信息。GIF倒是支持透明,但是GIF中顏色的信息都是索引,所以Alpha的解釋對GIF完全沒有效果,

             

            BitmapInfoHeader:

            biHeight:說明圖象的高度,以象素為單位。

                如果該值是一個正數,說明Btimap是Bottom up DIB,起始點是左下角,也就是從圖像的最下面一行掃描,位圖數組中得到的第一行數據實際是圖形的最下面的一行。圖像是倒向的;

                如果該值是一個負數,則說明圖像是TopDown DIB,起始點是左上角,圖像從最上面一行掃描,圖像正向的。

               大多數的BMP文件都是倒向的位圖,也就是時,高度值是一個正數。(注:當高度值是一個負數時(正向圖像),圖像將不能被壓縮(也就是說biCompression成員將不能是BI_RLE8或BI_RLE4)。

            posted on 2013-01-26 16:48 楊粼波 閱讀(590) 評論(0)  編輯 收藏 引用

            波多野结衣AV无码久久一区| 99久久国产热无码精品免费| 久久国产精品偷99| 亚洲精品无码专区久久同性男| 久久久久久久国产免费看| 久久乐国产精品亚洲综合| 久久久久久久久66精品片| 久久精品99久久香蕉国产色戒 | 欧美熟妇另类久久久久久不卡| 丰满少妇高潮惨叫久久久| 久久精品一区二区三区中文字幕| 亚洲欧美久久久久9999| 久久人妻少妇嫩草AV无码专区| 香港aa三级久久三级| 波多野结衣久久一区二区| www性久久久com| 精品久久久一二三区| 美女写真久久影院| 亚洲人成网亚洲欧洲无码久久| 国产精品久久久福利| 亚洲AV伊人久久青青草原| 国产精品一区二区久久| 伊人久久大香线蕉无码麻豆 | 久久久久99这里有精品10 | 少妇内射兰兰久久| 久久人妻少妇嫩草AV蜜桃| 99久久婷婷国产综合亚洲| 四虎国产精品成人免费久久| 国产精品久久久久久吹潮| 99久久香蕉国产线看观香| A级毛片无码久久精品免费| 欧洲成人午夜精品无码区久久| 亚洲精品成人久久久| 久久精品成人| 久久久久亚洲AV综合波多野结衣| 69国产成人综合久久精品| 色综合久久中文字幕无码| 偷窥少妇久久久久久久久| 青青久久精品国产免费看| 久久久WWW免费人成精品| 9999国产精品欧美久久久久久|