Bitmap四種屬性

2021-09-08 18:47:06 字數 2253 閱讀 1005

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則表示影象完全不透明。每個畫素都可以實現這種透明或者半透明的效果。更詳細解釋可以參考或者去買本數字影象處理的書回來看。

(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)

jsp四種屬性詳解

四種屬性範圍 1 page pagecontext 在乙個頁面中儲存屬性,跳轉之後無效 則乙個 page 範圍中的內容只能儲存在乙個頁面中 2 request 只在一次請求中儲存,伺服器跳轉後依然有效。request 屬性範圍表示的是在伺服器跳轉之後,所有設定的內容依然會儲存下來 頁面跳轉之後,可以...

position的四種屬性

值 描述static 預設 預設值。沒有定位,元素出現在正常的流中 忽略 top,bottom,left,right 或者 z index 宣告 relative 相對定位 生成相對定位的元素,相對於其正常位置進行定位。因此,left 20 會向元素的 left 位置新增 20 畫素。absolut...

CSS position 屬性 四種定位方式

static 預設值。沒有定位,元素出現在正常的流中 忽略 top,bottom,left,right 或者 z index 宣告 absolute 生成絕對定位的元素,相對於 static 定位以外的第乙個父元素進行定位。元素的位置通過 left top right 以及 bottom 屬性進行規...