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裡的影象檔案。
12# #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...