Windows Phone 解析圖片尺寸之bmp

來源:互聯網
上載者:User

前面介紹了Windows Phone 解析圖片尺寸之gif,之前也介紹了jpg和png圖片的相關解析。Windows Phone系統支援的圖片格式是jpg和png,所以bmp圖片的現實同gif圖片顯示的處理方式類似,同樣需要採用第三方類庫ImageTools,其中ImageTools的擷取在gif圖片解析中已經介紹,下面代碼給出建立一個顯示bmp圖片的控制項。

//建立bmp控制項        AnimatedImage bmpImage = new AnimatedImage();        Decoders.AddDecoder<BmpDecoder>();        //根據圖片位元組流載入圖片        ExtendedImage extendedImg = new ExtendedImage();        BmpDecoder dc = new BmpDecoder();        dc.Decode(extendedImg, stream);        bmpImage.Source = extendedImg;

典型的位元影像檔案格式通常包含下面幾個資料區塊:

位元影像頭:儲存位元影像檔案的總體資訊。

位元影像資訊:儲存位元影像映像的詳細資料。

調色盤:儲存所用顏色的定義。

位元影像資料:儲存一個又一個像素的實際映像。

通過解析位元影像頭我們可以判斷圖片是否為bmp格式,而我們所需要的圖片尺寸資訊儲存在位元影像資訊資料區塊裡。所以我們需要詳細瞭解位元影像頭和位元影像資訊兩個資料區塊的儲存結構。

位元影像頭,這部分是識別資訊,典型的應用程式會首先普通讀取這部分資料以確保的確是位元影像檔案並且沒有損壞。

位元組 #0-1 儲存位元影像檔案的標識符,這兩個位元組的典型資料是BM。

位元組 #2-5 使用一個dword儲存位元影像檔案大小。

位元組 #6-9 是保留部分,留做以後的擴充使用,對實際的解碼格式沒有影響。

位元組 #10-13 儲存位元影像資料位元置的地址位移,也就是起始地址。

位元影像資訊,這部分告訴應用程式映像的詳細資料,在螢幕上顯示映像將會使用這些資訊,它從檔案的第15個位元組開始。

位元組 #14-17 定義以下用來描述影像的區塊(BitmapInfoHeader)的大小。它的值是:40 - Windows 3.2、95、NT、12 - OS/2 1.x、240 - OS/2 2.x

位元組 #18-21 儲存位元影像寬度(以像素個數表示)。

位元組 #22-25 儲存位元影像高度(以像素個數表示)。

…………

以上關於bmp檔案結構的內容參考維基百科http://zh.wikipedia.org/wiki/BMP。

通過上面對BMP圖片格式的瞭解,可以用下面的代碼來解析bmp圖片的尺寸大小。

//Bmp 圖片前2位元組:0x42 4D        byte[] header = new byte[2];        stream.Read(header, 0, 2);        if ( !(header[0] == 0x42 && header[1] == 0x4D))        {            //不是BMP圖片            return;        }            //跳過16個位元組        stream.Seek(16, SeekOrigin.Current);            //bmp圖片的寬度資訊儲存在第 18-21位 4位元組        //bmp圖片的高度度資訊儲存在第 22-25位 4位元組        //讀取寬度,高度 各4位元組        byte[] buffer = new byte[8];        stream.Read(buffer, 0, buffer.Length);            width_ = BitConverter.ToInt32(buffer, 0);        height_ = BitConverter.ToInt32(buffer, 4);

作者:宇之樂

出處:http://www.cnblogs.com/huizhang212/

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.