關於BMP和AVI互相轉換 |
答題得分者是:istillloving
|
k033866394
一般會員 發表:1 回覆:4 積分:1 註冊:2010-07-21 發送簡訊給我 |
我是一BCB的新手
還請各位多多指教 我想做一個可以BMP和AVI互轉的程式 參考了http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=41002這篇 把BMP轉AVI做出來了 但是不知道要如何轉回去 請各位高手提供一些提示 還有為什麼那篇轉出來的AVI檔用KMP去播放 還沒播完就會自動停止 |
istillloving
高階會員 發表:33 回覆:182 積分:183 註冊:2008-10-09 發送簡訊給我 |
參考一下這篇
http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=101378 有什麼問題我們再討論 ===================引 用 k033866394 文 章=================== 我是一BCB的新手 還請各位多多指教 我想做一個可以BMP和AVI互轉的程式 參考了http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=41002這篇 把BMP轉AVI做出來了 但是不知道要如何轉回去 請各位高手提供一些提示 還有為什麼那篇轉出來的AVI檔用KMP去播放 還沒播完就會自動停止
------
恩...
編輯記錄
istillloving 重新編輯於 2010-08-17 15:18:33, 註解 無‧
istillloving 重新編輯於 2010-08-17 15:19:40, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:24:00, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:24:20, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:24:38, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:24:51, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:25:27, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:26:56, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:27:11, 註解 無‧ istillloving 重新編輯於 2010-08-17 15:28:15, 註解 無‧ |
k033866394
一般會員 發表:1 回覆:4 積分:1 註冊:2010-07-21 發送簡訊給我 |
istillloving大的程式我看了
作為轉換核心的TMyAVIUnit我也有找到 但有些部分看不太懂 在GetFrame(Graphics::TBitmap *pBitmap, long Index)中 Byte *pDIB = (Byte *)AVIStreamGetFrame(pGetFrame, Index); // get the data of 'real bitmap' Byte *pDest = (Byte *)pFBitmap->ScanLine[FHeight - 1]; CopyMemory(pDest, pDIB 0x28, pBIH->biSizeImage); 為什麼pDest只有ScanLine一行 就可以把整個Stream讀進去
編輯記錄
k033866394 重新編輯於 2010-08-18 15:01:10, 註解 無‧
|
istillloving
高階會員 發表:33 回覆:182 積分:183 註冊:2008-10-09 發送簡訊給我 |
您好:
關於這點我也不是很清楚呢 CopyMemory(pDest, pDIB 0x28, pBIH->biSizeImage); 會不會是因為這一段 因為一開始 ScanLine[FHeight - 1]; 指到每一行的開頭 然後用CopyMemory填進去阿 說真的這我也看不太懂 先看看定義先 http://msdn.microsoft.com/en-us/library/aa366535(VS.85).aspx 0x28 我猜應該是為了跳過標頭檔之類的吧 ===================引 用 k033866394 文 章=================== istillloving大的程式我看了 作為轉換核心的TMyAVIUnit我也有找到 但有些部分看不太懂 在GetFrame(Graphics::TBitmap *pBitmap, long Index)中 Byte *pDIB = (Byte *)AVIStreamGetFrame(pGetFrame, Index); // get the data of 'real bitmap' Byte *pDest = (Byte *)pFBitmap->ScanLine[FHeight - 1]; CopyMemory(pDest, pDIB 0x28, pBIH->biSizeImage); 為什麼pDest只有ScanLine一行 就可以把整個Stream讀進去
------
恩...
編輯記錄
|
k033866394
一般會員 發表:1 回覆:4 積分:1 註冊:2010-07-21 發送簡訊給我 |
對不起這麼晚才回復
最近事情開始有點趕了 回正題 開頭不是應該是ScanLine[0]嗎 ScanLine[FHeight - 1]應該是BitMap的最後一行 另外還發現了一個問題 不曉得為什麼當我做出一個AVI檔 用AddFrame加進去BMP檔皆為45*128時 當我想在開這個AVI檔時 就會在OpenAVIFile裡的AVIFileGetStream跳出錯誤
編輯記錄
k033866394 重新編輯於 2010-08-25 14:09:59, 註解 無‧
|
istillloving
高階會員 發表:33 回覆:182 積分:183 註冊:2008-10-09 發送簡訊給我 |
哈囉你好:
你改過的程式壓起來後PO給我我試看看 ===================引 用 k033866394 文 章=================== 對不起這麼晚才回復 最近事情開始有點趕了 回正題 開頭不是應該是ScanLine[0]嗎 ScanLine[FHeight - 1]應該是BitMap的最後一行 另外還發現了一個問題 不曉得為什麼當我做出一個AVI檔 用AddFrame加進去BMP檔皆為45*128時 當我想在開這個AVI檔時 就會在OpenAVIFile裡的AVIFileGetStream跳出錯誤
------
恩... |
k033866394
一般會員 發表:1 回覆:4 積分:1 註冊:2010-07-21 發送簡訊給我 |
不好意思 問題解決了 原因是我有部分程式碼打錯 現在又有另外一個問題出現 我想要做機密分享 但是我原本加入AVI的機密圖 轉回BMP時卻和原本的圖不一樣 不曉得是什麼原因
用WinHex去看檔案時發現有部分資料錯誤 但是用其他128*128的圖去轉都沒有問題 還是有其他方法可以把AVI的Stream取出來一個一個處理 不曉得該如何用附加檔 所以先傳到其他空間 http://www.mediafire.com/?6pd6m1gvw9z2c49
編輯記錄
|
k033866394
一般會員 發表:1 回覆:4 積分:1 註冊:2010-07-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |