取出BMP調色盤 |
尚未結案
|
holyduck
一般會員 發表:11 回覆:14 積分:5 註冊:2005-06-12 發送簡訊給我 |
我用C語言讀一個bmp的圖檔
讀檔和存檔各四個步驟:
讀bitmapfileheader
讀bitmapinfoheader
讀palette
讀image file,然後再依序存入 我宣告了兩個header的struct分別為
struct bitmapfileheader和struct bitmapinfoheader
還有unsigned char f來存放影像資料
這三項我都可以正確無誤的用fread讀出並且用fwrite寫入新檔
(f我是用fseek移到檔案位置再寫入)
可是調色盤我不管怎麼讀怎麼放都不對,所以圖顯示就不正確囉
請問有人有辦法讀調色盤和寫入嗎?? 謝謝
|
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
|
holyduck
一般會員 發表:11 回覆:14 積分:5 註冊:2005-06-12 發送簡訊給我 |
struct BmpFileHeader { 省略 }; struct BmpInfoHeader { 省略; }; struct BmpFileHeader bmp_fh; struct BmpInfoHeader bmp_ih; void bmp_read() { int i,j,psize=2;//psize=調色盤大小 int bitcount; fp=fopen("Lena128.bmp","r"); bitcount=bmp_ih.bibitcount; for(i=0;i |
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
|
holyduck
一般會員 發表:11 回覆:14 積分:5 註冊:2005-06-12 發送簡訊給我 |
|
holyduck
一般會員 發表:11 回覆:14 積分:5 註冊:2005-06-12 發送簡訊給我 |
#include這是我最新修改的~~ 我將兩個header跟palette一起讀~~ 調色盤依然有問題~~>"<~~ 請問有沒有人看的出哪裡有問題~~ |
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
|
rik
一般會員 發表:40 回覆:81 積分:24 註冊:2004-09-24 發送簡訊給我 |
引言: 你可否檢查一下,你的BmpFileHeader的結構大小,你可以在bmp_read內加入一行 printf("%d",sizeof(BmpFileHeader));然後看一下顯示出來的數字,如果為14就是正確的,如果為16就是錯誤. 如果為16,你可以在程式前端加入#pragma pack(1)來修正資料結構對齊的問題,不然你所讀進的資料都會是錯誤的.原來可以這樣@@! 我之前在讀時 就有發現 unsigned char 改用 int 代替時會出現錯誤 明明struct size=14 卻變成16 (當然 我測試時printf出來的結果也因此是錯的) 最後只要用那招= =" (也算是學習的附加收入) unsigned char bfOFFSET[4]; 要怎麼讀成int呢..... 就用 int Reg; memcpy(&Reg, bfOFFSET, sizeof(int) ); 這樣執行後 Reg就是bfOFFSET[4] 的int讀法摟^^ 如果問我為啥要這麼做 是因為我想輕鬆讀出biWIDTH biHEIGHT biSIZE=口=
------
時與不時的撿起身旁的拼圖碎片 不懂的部分 半解的部分 就像一塊拼圖 留於腦中 等待拼出完美解答的一天 這就是我的思路 我的創作方法 而我也接受 這作法所帶來的"代價" - 時間 |
holyduck
一般會員 發表:11 回覆:14 積分:5 註冊:2005-06-12 發送簡訊給我 |
阿~忘記跟大家說~ 用BCB的話~ 工具列的Project->Operation->Advanced Compiler->Data alignment
要把選項改成Byte或是Word
用Quad word的話會一次以四個Byte為單位來讀取~
所以會讀到16個
至於我的是14個沒錯 用UltreEdit看~
我的Header都沒問題~
但是到了調色盤就會出錯~~
會有一組值是重複的~~
但是調色盤的大小是正確的
很神奇的現象說~~>"<~~
現在可以秀圖~可是明明就是灰階的圖卻會有色彩出現~~>"<~~ 發表人 - holyduck 於 2005/07/14 19:15:45
|
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
|
holyduck
一般會員 發表:11 回覆:14 積分:5 註冊:2005-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |