我正在從一個起點像素(x,y)的作物.ppm格式文件(裁剪圖像的左上角)到終點像素(一個C程序X +瓦特,x + h)(裁剪圖像的左下角)。裁剪.ppm格式文件用C
在.ppm格式文件中的數據是以下格式的:
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
有一個簡單的方法,至極避免了使用2個維陣列,以使用scanf()來做到這一點?
我正在從一個起點像素(x,y)的作物.ppm格式文件(裁剪圖像的左上角)到終點像素(一個C程序X +瓦特,x + h)(裁剪圖像的左下角)。裁剪.ppm格式文件用C
在.ppm格式文件中的數據是以下格式的:
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
有一個簡單的方法,至極避免了使用2個維陣列,以使用scanf()來做到這一點?
一個簡單的方法是在讀取文件時簡單地跟蹤像素座標。如果當前位於裁剪矩形中,則存儲像素;否則,跳過它。
如果你想得到更多的花式:找出每行開始的字節偏移量,尋找它,然後讀取整行。
警告,某些pnm文件處於二進制模式(它們在文件內容的開始處與幻數不同)。
也許查詢pnmcrop的來源會有幫助嗎?
它應該是「如果你在裁剪矩形目前是**,**寫像素;否則,跳過它」 – anatolyg 2011-03-07 16:48:26
IIRC的線是不同的長度,因爲沒有值的填充。您需要掃描整個文件並找到所有\ n來確定行位置。 – 2011-03-07 16:58:09
@anatolyg我改變了這個詞來存儲,這更好地反映了我的意思。 – cobbal 2011-03-07 17:02:41