2011-03-07 37 views
2

我正在從一個起點像素(x,y)的作物.ppm格式文件(裁剪圖像的左上角)到終點像素(一個C程序X +瓦特,x + h)(裁剪圖像的左下角)。裁剪.ppm格式文件用C

在.ppm格式文件中的數據是以下格式的:

rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb
rgbrgbrgbrgbrgbrgb

有一個簡單的方法,至極避免了使用2個維陣列,以使用scanf()來做到這一點?

回答

5

一個簡單的方法是在讀取文件時簡單地跟蹤像素座標。如果當前位於裁剪矩形中,則存儲像素;否則,跳過它。

如果你想得到更多的花式:找出每行開始的字節偏移量,尋找它,然後讀取整行。

+0

它應該是「如果你在裁剪矩形目前是**,**寫像素;否則,跳過它」 – anatolyg 2011-03-07 16:48:26

+0

IIRC的線是不同的長度,因爲沒有值的填充。您需要掃描整個文件並找到所有\ n來確定行位置。 – 2011-03-07 16:58:09

+0

@anatolyg我改變了這個詞來存儲,這更好地反映了我的意思。 – cobbal 2011-03-07 17:02:41

0

警告,某些pnm文件處於二進制模式(它們在文件內容的開始處與幻數不同)。

也許查詢pnmcrop的來源會有幫助嗎?