RAW格式轉化為BMP

2021-08-03 04:36:56 字數 2437 閱讀 2549

首先先介紹c++中影象資料分配記憶體方法。

在計算機中影象是乙個二維的數字點陣。

比較容易想到的是申請乙個二維矩陣來儲存影象

如:byte image[512][512];

可以儲存一幅512*512個畫素的影象,每個畫素用乙個位元組表示,乙個位元組能表示0-255共256個不同取值。所以這一二維陣列比較合適儲存灰度影象

對於二維彩色影象,如果每個畫素分別有r,g,b 3個顏色分量,則可以用如下的方式分配二維陣列。

struct rgb;

rgb image[512][512];

但是分配二維陣列有乙個致命缺點,就是不能分配占用空間較大的陣列,如imgae。

所以,比較好的二維影象記憶體分配方法可用以下思想:

byte *imgae[5000];

for(int i=0;i<512;i++)

,以上**實際就是建立乙個二維陣列,image[i][j]表示二維陣列的第i行第j列。儲存影象第i行第j列個畫素。

bmp檔案組成分為:

header

bitmapfileheader

bitmapinfoheader

rgbquad

data }

以下是將.raw 檔案轉為.bmp格式的程式,

#include

#include

#include

int  main()

//unsigned char *image[1000];//image[i] is a point

for(i=0;i<512;i++)

//after this the lena.raw's data is been read into image;

fclose(fp);

fp1=fopen("f:\\new.bmp","wb");

if(fp1==null)

if(storew%4!=0)

// bitmapfileheader bh;//位圖標頭檔案(包含有關檔案型別,大小,存放位置等資訊)

bh.bftype=((word)('m'<<8)|'b');//"bm"說明檔案型別

bh.bfreserved1=0;//保留

bh.bfreserved2=0;//保留

bh.bfsize=sizeof(bitmapfileheader)+sizeof(bitmapinfoheader)+sizeof(rgbquad)*256 + storew*imageh;//檔案大小

bh.bfoffbits=sizeof(bitmapfileheader)+sizeof(bitmapinfoheader)+sizeof(rgbquad)*256;

//表示從頭檔案開始到實際影象資料資料之間的位元組的偏移量。bfoffbits可以直接定位畫素資料

//bitmapinfoheader binfo;//位圖資訊頭

binfo.bisize=sizeof(bitmapinfoheader);//說明bitmapinfoheader結構所需的字數

binfo.biwidth= imagew;//影象寬度,以畫素為單位

binfo.biheight=imageh;//影象高度,以畫素為單位

binfo.biplanes=1;//為目標裝置說明位面數,其中總是被設為1

binfo.bibitcount=8;//說明位元數/畫素的顏色深度,值為0,1,4,8,16,24或32,256灰度級的顏色深度為8,因為2^8=256

binfo.bicompression=bi_rgb;//說明影象資料壓縮型別

binfo.bisizeimage=storew*imageh;//說明影象的大小,一位元組為單位,

binfo.bixpelspermeter=0;//水平解析度,可以設為0

binfo.biypelspermeter=0;//垂直解析度,可以設為0

binfo.biclrused=256;//說明位圖實際使用的彩色表中顏色索引數

binfo.biclrimportant=0;//說明對影象顯示有重要影響的顏色索引數目,為0表示都重要。

fwrite(&bh,sizeof(bitmapfileheader),1,fp1);//把點陣圖標頭檔案寫入新建的bmp格式檔案中

fwrite(&binfo,sizeof(bitmapinfoheader),1,fp1);//位圖資訊頭寫入新建的bmp格式檔案中

// rgbquad rgb;

rgb.rgbreserved=0;

for(i=0;i<256;i++)

for(i=0;i<256;i++)

fclose(fp1);

return 0 ;}

獲取當前時間並轉化為轉化為各種格式

在專案中直接把 複製成乙個fortime.js檔案,然後在需要用到的時候import或者require一下,根據需要用 例如 var fortime require utils fortime.js 然後根據需要選擇是 fortime.formattime new date fortime.form...

將Excel轉化為xml格式

coding utf 8 created on mon aug 19 14 14 01 2019 author administrator usr bin env python coding utf 8 import xlrd import xml.dom.minidom import os imp...

jsonp格式的資料轉化為json格式

如果前端請求獲取到的資料格式是jsonp,那麼我們就要轉換成json才能進行解析。datas為jsonp資料格式的字串變數,如 jsonp function jsonptojson datas const matches datas.match reg matches匹配到的是陣列,陣列第乙個是所有...