如何顯示 two bytes 影像? |
尚未結案
|
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
|
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
|
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
tracychen您好:
您可以參考下面連結,修改成您所需要的樣子
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=38156
【發表】讀RAW Date的影像 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~>
|
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
謝謝taishyang版主的回應! 我的做法如下:
//-------------------------------------------------------------------
void TfmImageViewer::LoadFromFile(String FileName)
{
m_FileName = FileName;
StatusBar1->Panels->Items[0]->Text = ExtractFileName(FileName); //2003/12/31 tracy for read raw data
//imgSrc->Picture->LoadFromFile(FileName); //load bmp
unsigned short *data;
data = new unsigned short [m_ImgWidth*m_ImgHeight]; FILE *fin;
if ((fin = fopen(m_FileName.c_str(),"rb"))==NULL)
{
ShowMessage("Can not open" FileName "!");
return;
}
fread(data, sizeof(unsigned short)*m_ImgWidth*m_ImgHeight, 1, fin);
fclose(fin); //Show raw data
Show2BytesImage(data, m_ImgWidth, m_ImgHeight, imgSrc); if (data) delete [] data;
data = NULL; }
//--------------------------------------------------------------------
void TfmImageViewer::Show2BytesImage(unsigned short *data, int imgW, int imgH, TImage *Image)
{
byte *ptr;
for (int j = 0; j < imgH; j)
{
ptr = (byte*)Image->Picture->Bitmap->ScanLine[j];
for (int i = 0; i < imgW; i)
ptr[i] = data[j*imgW i]/16;
}
Image->Refresh();
}
//-------------------------------------------------------------------- 想請問我以fopen以及fread的方式讀檔
是否有什麼優劣之處?
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |