TMemoryStream儲存半張圖的問題 |
尚未結案
|
kimogi
一般會員 發表:18 回覆:10 積分:5 註冊:2005-07-11 發送簡訊給我 |
我想要儲存一張影像的前100Bytes,但是儲存完用pspad開原圖跟儲存後的圖前100Bytes不一樣,不知是哪裡寫錯了,希望能幫我看一下,謝謝^^
if (OpenPictureDialog1->Execute()) { Graphics::TBitmap *MyBMP = new Graphics::TBitmap; MyBMP->LoadFromFile(OpenPictureDialog1->FileName); TMemoryStream *msSrc = new TMemoryStream(); msSrc->Write(MyBMP,100); msSrc->SaveToFile("C:\\test.bmp"); delete msSrc; delete MyBMP; } else return; |
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
kimogi 您好: Bitmap 的內含資料不能像您那樣直接取用的,請參考下列作法:
if (OpenPictureDialog1->Execute()) { Graphics::TBitmap *MyBMP = new Graphics::TBitmap; MyBMP->LoadFromFile(OpenPictureDialog1->FileName); TMemoryStream *msSrc = new TMemoryStream(); //7 天天敲鍵盤 v 時時按滑鼠 8 |
kimogi
一般會員 發表:18 回覆:10 積分:5 註冊:2005-07-11 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
kimogi 您好:
引言:[問題一] 因為我試了儲存前10Bytes對照了一下原圖前10Bytes,為什麼會多了4個Bytes,也就是我想測試一下存10Bytes就好,但他為什麼會存成14Bytes,試了不同的大小總是會出現多儲存的位元 [問題二] 我又試了存500Bytes,那扣掉前54Bytes剩下像素值有存進去但卻無法用小畫家開,請問是什麼原因呢,不是因該會開一出部分圖嘛?1. 您是使用何種方式儲存資料的?我用我自己前一篇提供給您的方式儲存資料,並未發生您描述的狀況。 2. 表頭資料中有資料長度與長、寬....等資訊,您有配合您實際裁剪過的資料來做修正嗎?如果沒有的話,那個檔案就不是一個完整的 .BMP 檔案,當然無法正常開啟。 7 天天敲鍵盤 v 時時按滑鼠 8 |
kimogi
一般會員 發表:18 回覆:10 積分:5 註冊:2005-07-11 發送簡訊給我 |
問題二解決了,謝謝,但問題一我就是照你幫我修改過的程式碼儲存,如下
if (OpenPictureDialog1->Execute()) { Graphics::TBitmap *MyBMP = new Graphics::TBitmap; MyBMP->LoadFromFile(OpenPictureDialog1->FileName); TMemoryStream *msSrc = new TMemoryStream(); MyBMP->SaveToStream(msSrc); msSrc->Size =10; msSrc->SaveToFile("C:\\test.bmp"); delete msSrc; delete MyBMP; } else return; 我所選的圖是256*256 Lena的圖 第一張圖是用pspad看原圖的資料第二張圖是我存的10Bytes 明明存10Bytes卻會多出4個Bytes,而且為什麼除了BM兩字的資料是正確的,其他後面資料(例如:第4個bytes是00,但我存的是0d),謝謝,請幫我看一下^^ |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
kimogi
一般會員 發表:18 回覆:10 積分:5 註冊:2005-07-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |