[問題] 存進圖片檔是否要把值轉成char型態

看板C_and_CPP (C/C++)作者 (皓皓)時間11年前 (2015/01/29 23:01), 11年前編輯推噓5(5013)
留言18則, 7人參與, 最新討論串1/1
檔案指標 ptr 有一個int a[32*32] 裡面存數字代表像素 可否直接 for(int i=0;i<32*32;i++) fwrite(&a[i],sizeof(char),1,ptr); 如果寫sizeof(int)會失敗 寫char就可以 可是這樣會不會有型態轉換的問題?! 怕跑出來的圖是不對的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.152.134 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1422543671.A.75D.html

01/30 00:11, , 1F
我的水晶球顯示你或許是用"w"開檔, 用"wb"看看?
01/30 00:11, 1F

01/30 00:19, , 2F
我的水晶頭微微點了個頭,判定需2,命中機率1d6+1
01/30 00:19, 2F

01/30 00:23, , 3F
本板培育出許多隔空抓藥專家
01/30 00:23, 3F

01/30 00:32, , 4F
話說假設是 32-bit 平台或 LP64
01/30 00:32, 4F

01/30 00:32, , 5F
一個 sizeof(int) = 4, 一個像素 24-bit, 我有什麼誤會嗎
01/30 00:32, 5F

01/30 00:33, , 6F
而且是有 RGB 還是只有 256 灰階?
01/30 00:33, 6F

01/30 00:35, , 7F
不過說真的 好歹給個errno咩... 用ferror(ptr)看看吧
01/30 00:35, 7F

01/30 00:36, , 8F
用linux sdk出的包 給個error 方便自己 也方便別人 :P
01/30 00:36, 8F

01/30 01:33, , 9F
我的水晶球顯示你在睡覺了
01/30 01:33, 9F

01/30 05:05, , 10F
我的水晶球顯示你還沒起來
01/30 05:05, 10F
我是用WB開檔 我要輸出的圖是灰階圖 input只有灰階像素值 我試著輸出成BMP 圖檔 或是YUV圖檔 輸出都要寫成CHAR輸出圖片才跑得出來 但資料是int 感覺這樣型態應該不對 ?! 沒用過ferror...不過應該直接看圖片有沒有問題意思一樣?! 另外 for(int i=0;i<32*32;i++) fwrite(&a[i],sizeof(char),1,ptr); 如果寫成以下這樣 圖片也出不來 fwrite(a,sizeof(char),32*32,ptr) 感覺應該這2個應該是一樣的?!只是一個是連續記憶體一個是不連續?! 不知道為何寫成下面那個就會有問題 http://www.codeshare.io/SQ6qM yuv檔案寫入 ※ 編輯: unixxxx (140.115.152.134), 01/30/2015 13:44:15

01/30 17:33, , 11F
兩者不同唷int a[32x32]大小是32*32*sizeof(int)
01/30 17:33, 11F

01/30 17:34, , 12F
For迴圈那方式是在&a[i]輸出1個byte
01/30 17:34, 12F

01/30 17:35, , 13F
而第二個方式i看起來是0是在&a[0]處印32byte
01/30 17:35, 13F

01/30 17:36, , 14F
32*32byte才對
01/30 17:36, 14F

01/30 17:38, , 15F
簡單說有個int a[2] = {0x00010203, 0x04050607}
01/30 17:38, 15F
我把問題打錯了..已修正 ※ 編輯: unixxxx (140.115.152.134), 01/30/2015 18:25:35

01/30 19:09, , 16F
用兩種方法會看到一個03 02,一個03 07
01/30 19:09, 16F

01/30 19:13, , 17F
讀寫BMP應該要考慮檔案的Header
01/30 19:13, 17F

01/30 19:13, , 18F
01/30 19:13, 18F
我大概懂了 感謝!! ※ 編輯: unixxxx (114.43.71.64), 01/30/2015 21:34:22
文章代碼(AID): #1KoaitTT (C_and_CPP)
文章代碼(AID): #1KoaitTT (C_and_CPP)