RAW檔案的讀取

2021-06-06 23:39:24 字數 4403 閱讀 8364

1.raw結構是純畫素資料檔案,裡面只有每個畫素的值,沒有檔案頭、調色盤等資料,所以要想正確顯示乙個raw檔案影象,必須人工指定它的長、寬和畫素深度。

2.每個畫素根據格式不同占有不同的位元組,如8位256色每個畫素佔乙個位元組;24位真彩色每個畫素佔三個位元組。

3.要自己寫,注意:

(1)函式要有此raw檔案的長、寬和畫素深度三個引數,從而得到bmp檔案頭,存入strbmp的前面;

(2)函式裡把讀進來的raw檔案資料strraw裡的資料進行行反轉放入strbmp中檔案頭之後,即把第length-1-i行(從第0行開始記,i從0開始)的資料放到第i行,而每行裡的資料不變。這樣做是因為bmp檔案裡的畫素資料是從最後一行即length-1開始的。

(3)使用顯示bmp檔案的函式來顯示此strbmp裡的影象檔案。

1

2# #include

"raw.h"3

#

4# #ifdef _debug 5#

#undef

this_file 6#

static

char

this_file

=__file__; 7#

#define

new debug_new 8#

#endif

9#

10#

//

11#

//construction/destruction

12#

//

13#

14# craw::craw()

15#

//無引數初始化,不分配記憶體.

16#

21#

22# craw::craw(csize sizeimage)

23#

//初始化,指定影象大小,並分配相應的記憶體.

24#

31#

32# craw::craw(csize sizeimage, byte

*pbuff)

33#

//初始化,sizeimage:影象大小,pbuff:指向畫素位的指標.

34#

41#

42# craw::

~craw()

43#

48#

49#

//下面是從檔案的路徑讀寫raw格式的影象, 這裡是檔案儲存路徑

50#

51# bool craw::readfromfile(cstring strfilename)

52#

//從檔案中讀取raw影象,strfilename:原始檔的完整路徑和檔名.

53#

65#

66#

if(file.read(

&nheight,

sizeof

(int

))!=

sizeof

(int

))

71#

72#

if(file.read(

&nwidth,

sizeof

(int

))!=

sizeof

(int

))

77#

78# m_sizeimage.cy

=nheight;

79# m_sizeimage.cx

=nwidth;

80# m_nheight

=nheight;

81# m_nwidth

=nwidth;

82# m_pbuff

=new

byte[nheight

*nwidth];

83#

84#

if(file.readhuge(m_pbuff, nheight

*nwidth)

!=(nheight

*nwidth))

89#

90# file.close();

91#

return

true;

92# }

93#

94#

95# bool craw::writetofile(cstring strfilename)

96#

//將raw影象寫到檔案, strfilename:目標檔案的完整路徑和檔名.

97#

109#

110# file.write(

&nheight,

sizeof

(int

));

111# file.write(

&nwidth,

sizeof

(int

));

112#

113# file.writehuge(m_pbuff, nheight

*nwidth

*sizeof

(byte));

114#

115# file.close();

116#

117#

return

true;

118#

119# }

120#

121#

//這下面是raw影象格式和bitmap影象格式的相互間的互動轉換

122# cdib

*craw::getdib()

123#

//由raw影象獲得dib點陣圖.

124#

143#

144# pimage

=new

byte[sizedib.cy

*sizedib.cx];

145# memset(pimage,

0, sizedib.cy

*sizedib.cx);

146#

147#

for(ny=0

; ny

<

m_sizeimage.cy; ny++)

=""for=

""(nx="

0;"nx=

""><

m_sizeimage.cx; nx++)

=""pimage[ny

*sizedib.cx

+nx]="

m_pbuff[(m_sizeimage.cy-1-ny)*m_sizeimage.cx+nx];

"pdib

-=""

>

m_lpimage

=pimage;

148#

return

pdib;

149# }

150#

151# bool craw::getfromdib(cdib

*pdib)

152#

//由dib點陣圖獲得raw影象.

153# =""

void=""

craw::serialize(carchive=""

&ar)=""

180# else

183# }

184#

185#

//下面是從檔案中讀raw影象,以及向檔案中寫raw影象

186# bool craw::write(cfile

*pfile)

187#

197#

catch

(cexception

*pe)

202#

203#

return

true;

204# }

205#

206# bool craw::read(cfile

*pfile)

207#

224#

catch

(cexception

*pe)

229#

230#

return

true;

231# }

232#

233#

234#

void

craw::empty()

235#

241#

242# bool craw::isempty()

243#

RAW檔案的讀取

1.raw結構是純畫素資料檔案,裡面只有每個畫素的值,沒有檔案頭 調色盤等資料,所以要想正確顯示乙個raw檔案影象,必須人工指定它的長 寬和畫素深度。2.每個畫素根據格式不同占有不同的位元組,如8位256色每個畫素佔乙個位元組 24位真彩色每個畫素佔三個位元組。3.要自己寫,注意 1 函式要有此ra...

Raw資料讀取

一般相機裝置獲取的資料並不是8位的資料,而是16位的raw資料,也就是說我們看到的都是經過對16位的資料進行讀取,然後轉8位進行顯示 中間可能包含各種演算法,用於提高影象的畫質 中rawdatatoimg 函式就是轉八位資料的函式,方法有很多,比如線性對映 直方圖調光 單平台調光 雙平台調光等等。b...

Adnroid 讀取raw的txt等文字檔案

有時候我我們想要把文字內容儲存在乙個txt檔案裡,需要的時候再讀取 1.先在專案的res資料夾下新建乙個raw資料夾,把 文字檔案複製到raw資料夾 2.讀取raw檔案的方法 public static string readfilefromraw activity context,int rawn...