各位高手.....請問一個問題有關轉檔的問題..?? |
尚未結案
|
kevinhue
一般會員 ![]() ![]() 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
|
lcsboy
版主 ![]() ![]() ![]() ![]() ![]() 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
可否說說你的.bin檔的格式是怎樣呢?
Q1. 只是把圖檔的內容存下來的叫作.bin檔嗎?
Q2. 還是這個.bin是去掉Header只留圖素的檔叫.bin呢?
Q3. 或是圖素與調色盤分離的才是你要的.bin檔呢? 以上只要回答一個,相信很快有人可以解得出來
|
kevinhue
一般會員 ![]() ![]() 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
|
lcsboy
版主 ![]() ![]() ![]() ![]() ![]() 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
引言: 親愛的lcsboy: 我只是要中間圖素的部份,因為我想做一個用LED顯示的圖檔..... 可以請教一下要怎麼抓... Kevinhue敬上中間圖素的部份? 還是表達的不是非常的清楚...嗯...不知道你的中間是從第幾個byte還是什麼顏色開始 所以請參考以下的寫法, 自行增修 |
kevinhue
一般會員 ![]() ![]() 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
親愛的lcsboy老大:
下面是我做的一些小修改....可是有個問題,就是為啥我執行之後,開啟的bmp檔
和我所存的bin檔的大小一樣,可是裡面卻沒有值(都是00h)可以幫我看一下好嗎??
TMemoryStream *SourceTMS=new TMemoryStream();
TMemoryStream *TargetTMS=new TMemoryStream();
Graphics::TBitmap *MyBmp=new Graphics::TBitmap;
char *pSource, *pTarget;
MyBmp->LoadFromFile(OpenDlg->FileName);
MyBmp->SaveToStream(SourceTMS);
pSource=(BYTE *)SourceTMS->Memory;
pSource =53; //bmp檔的值是從第0036h開始放值
TargetTMS->Size=SourceTMS->Size-54;
pTarget=(BYTE *)TargetTMS->Memory;
for (int x=0; x<(SourceTMS->Size-54); x )
{
buffer=buffer *(pTarget ); //buffer是公用的String
} delete MyBmp;
delete SourceTMS;
delete TargetTMS; Kevinhue敬上
|
lcsboy
版主 ![]() ![]() ![]() ![]() ![]() 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
引言: TargetTMS->Size=SourceTMS->Size-54; pTarget=(BYTE *)TargetTMS->Memory; for (int x=0; x<(SourceTMS->Size-54); x ) { buffer=buffer *(pTarget ); //buffer是公用的String }這位同學.....不知道你有沒有注意原先我的demo中有這麼的一行: *pTarget[i]=*pSource[pt ]; 1. 很合理!!! 因為TargetTMS你沒給他任何的Data, 所以當你new一個TMemoryStream的起始值就是0x00, 於是乎, 你的code的寫法, 是把一堆0x00放到你的buffer, 所以你的buffer裡的data都是0x00 <--- 非常合理 2. 也許你codeing error, 應該是改成這樣吧? buffer=buffer *(pSource ); 如果程式改成這樣的話, 那就不需要TargetTMS了 3. 公用的String?是TStringList還是TMemoryStream? 還是AnsiString? 不管如何....還是可以達到你的要求...只是......學程式要會活用呀 |
kevinhue
一般會員 ![]() ![]() 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
親愛的lcsboy老大:
浙是我改過之後的程式,是可以跑值出來了,而且"大部份"都對,現在唯一的問題就是,假如我讀54k的bmp檔,而我存的bin檔只有32k,怎麼會這樣ㄚ....可以幫我解決一下好嗎???
TMemoryStream *TargetTMS=new TMemoryStream();
Graphics::TBitmap *MyBmp=new Graphics::TBitmap;
char *pTarget;
MyBmp->LoadFromFile(OpenDlg->FileName);
MyBmp->SaveToStream(TargetTMS);
pTarget=(BYTE *)TargetTMS->Memory;
TargetTMS->Size;
for (int x=0; x
|
lcsboy
版主 ![]() ![]() ![]() ![]() ![]() 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
引言: 親愛的lcsboy老大: 浙是我改過之後的程式,是可以跑值出來了,而且"大部份"都對,現在唯一的問題就是,假如我讀54k的bmp檔,而我存的bin檔只有32k,怎麼會這樣ㄚ....可以幫我解決一下好嗎??? TMemoryStream *TargetTMS=new TMemoryStream(); Graphics::TBitmap *MyBmp=new Graphics::TBitmap; char *pTarget; MyBmp->LoadFromFile(OpenDlg->FileName); MyBmp->SaveToStream(TargetTMS); pTarget=(BYTE *)TargetTMS->Memory; TargetTMS->Size; for (int x=0; x前提:圖檔在File裡的格式與Bitmap在記憶體排列的格式是不一樣相同的 1. 在上面紅色的那一行下面, 試試: ShowMessage(TargetTMS->Size); // 或許你就會知道有什麼不同了 2. 詳細的圖檔在File 或是 圖檔在記憶體的格式, 請參閱相關的規格說明, 我不在此作說明. |
kevinhue
一般會員 ![]() ![]() 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
|
lcsboy
版主 ![]() ![]() ![]() ![]() ![]() 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |