本文目錄一覽:
C語言 bmp 圖片處理填充問題問題
聽你描述,我認為是數據格式問題。
為奇數時不可以,而同樣方法用偶數時就可以,你可以看看奇數時你生成的文件的大小是不是比原文件多一個位元組?(可以用小一點的圖試)
可能就是你讀數據和寫數據都採用了雙位元組的格式。
解決方法我也不知道,但我覺得一般不應該出問題。
BMP頭文件共54個位元組,第35和36位元組……是說頭文件以後的總位元組數的,這個要和實際的對應,如果不一樣就無法繪圖。這些位元組是16位數,前面的第35位元組為低位,後面位一次增高,例如:一個10X10的BMP圖像,這裡應該是2C 01=300=10X10X3個位元組,文件總大小為354位元組。但實際這個值可以比300大:比如:剛才的圖形這裡可以是40 01=320位元組,其實後面的20個位元組是沒用的,實際文件大小為374位元組,最後的20位元組沒用。你寫的文件大小要和這個值對應起來,不然就無法繪圖。
也就是說從第35個位元組開始的16進位數值是圖像的高度X寬度X3(實際圖形中,這個數值可以高於圖像的高度X寬度X3),但這個數值是對應頭文件(54位元組)後面的位元組總數(必須對應),最後使得這個數值加上54等於文件大小,並且這個數值要大於等於圖像的高度X寬度X3。
c語言如何創建BMP並填充
首先讀bmp文件頭,然後根據bmp寬度*bmp高度 把數據再讀進來 不過我讀進來數據都是做壓縮的 還沒有直接拷貝。 個人覺得如果只是拷貝,完全沒有必要讀這些信息 首先獲得源文件佔用位元組大小,然後生成一個相同大小文件直接copy 不處理內部數據的話…
用C語言在一張BMP圖片中加入另一張BMP圖片
把圖片的二維點陣數據分別讀到2個二維數組裡,
進行二維矩陣操作即可,最後把二維數組存成bmp文件即可
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241861.html