電子相簿之bitmap

2022-07-27 17:30:20 字數 1862 閱讀 3154

位**件主要分為3部分:1. 檔案資訊頭     14byte

2. 位圖資訊頭     40byte

3. rgb顏色陣列   由影象長寬尺寸決定

1. 檔案資訊頭

定義結構體:

typedef struct tagbitmapfileheader bitmapfileheader;

bftype:必須是0x4d42

bfsize: 位**件的大小

bfreserved1:保留成員1,必須為0

bfreserved2:保留成員2,必須為0

bfoffbits:從檔案頭開始到實際的點陣圖資料之間的偏移量

2. 位圖資訊頭

定義結構體:

typedef struct tagbitmapinfoheader bitmapinfoheader;

bisize:結構體大小,以字為單位(4位元組),4位元組對齊

biwidth: 影象寬度,以畫素為單位

biheight:影象高度,以畫素為單位。大於0,影象是倒向的;小於0,影象是正向的。大多數為倒向的。就是說影象資料是從影象的左下腳的畫素開始一行一行的儲存的。

biplanes:總是為1

bibitcount:每畫素所佔的位元數(位數),一般為24或32位

bicompression:影象資料壓縮型別,討論沒有壓縮的型別:bi_rgb

bisizeimage:說明影象的大小,以位元組為單位。為bi_rgb型別時可以設定為0

bixpelspermeter:水平解析度,以畫素/公尺表示

biypelspermeter:垂直解析度,以畫素/公尺表示

biclrused:說明位圖實際使用的調色盤中的索引數,為0就是使用所有的索引數

biclrimportant:說明對影象顯示有重要影響的索引數,為0就是都重要

3. rgb顏色陣列

windows下rgb顏色陣列實際上是以bgr格式來儲存的,24位就是從高位到低位每個位元組儲存的顏色資料依次是bgr,32位的rgb點陣圖從高位到低位依次是bgr以及最低乙個位元組位影象透明度

4. 載入檔案頭

//load the file header

bitmapfileheader header;

memset(&header, 0, sizeof(header));

inf.read((char*)&header, sizeof(header));

if(header.bftype != 0x4d42)

return false;

5. 載入位圖資訊

//load the image information header

bitmapinfoheader infoheader;

memset(&infoheader, 0, sizeof(infoheader));

inf.read((char*)&infoheader, sizeof(infoheader));

m_iimagewidth = infoheader.biwidth;

m_iimageheight = infoheader.biheight;

m_ibitsperpixel = infoheader.bibitcount;

6. 行對齊

載入得到的點陣圖資訊的每個畫素是4位元組對齊的,如果影象的畫素不是4位元組對齊,會自動在位後面補零,湊成4位元組對齊。

這樣影象資料的長度就是:

//calculate the image data size

int ilinebytecnt = (((m_iimagewidth*m_ibitsperpixel) + 31) >> 5) << 2;

m_iimagedatasize = ilinebytecnt * m_iimageheight;

Android 儲存bitmap到相簿

安卓原生的儲存相簿方法可以用但是可調引數很少,對三星這樣的手機支援不好,的建立時間一般為1970.1.1,可以通過複寫android原生的方法來新增相關引數,比如 建立時間和gps位置資訊什麼的 下面是儲存到相簿用的函式 insert an image and create a thumbnail ...

電子相簿特效

初入前端這行不久,對很多東西還是很陌生,頁面布局 合理使用html標籤 css屬性 js書寫習慣等等還都不是很熟悉,所以看到感興趣的東西就想看看原始碼,看看實現原理,用來學習。前幾天看到tattoo寫的乙個jquery版結婚電子請帖,對首頁的相簿效果感興趣,所以把原始碼開啟看了兩遍,自己再敲了一遍。...

電子相簿系統(八)驗證使用者是否可用

我們的系統要求使用者名稱不能有重複的,所以使用者可以通過單擊 驗證使用者名稱是否可用 來驗證資訊。這裡也採用非同步請求的。如圖所示。學習了前面的相關知識之後,我想這個功能就不會很難了。這裡一樣的,也是通過我們業務層來查詢資料庫,然後對於不同的查詢結果做出不同的資訊反饋。1 jquery的檔案中,定義...