使用 p5.js 的 loadImage
會傳回 p5.Image
實例,可以透過該實例的 loadPixels
載入像素資料,之後就可以透過 get
、set
方法存取圖片像素資料。
get
方法可以指定圖片的像素座標 (x, y),一樣是往右為 x 正方向,往下為 y 正方向,在只指定兩個參數的情況下,可以取得單一像素資料,這會是個陣列,包含了該位置像素的 [r, g, b, alpha]
資料;也可以指定一個範圍,這會傳回 p5.Image
代表指定的範圍,詳情可參考 API 文件。
set
方法可以指定圖片的像素座標 (x, y) 以及像素資料,像素資料可以是數值(指定灰階)、陣列(指定 [r, g, b, alpha]
)、p5.Color
(也可透過 color
函式建立),更新後必須使用 updatePixels
,才會真正更新圖片像素。
例如,RGB 轉灰階的公式是 gray = (r*38 + g*75 + b*15) >> 7
,以下範例將載入的圖片轉灰階後顯示:
如果在意存取像素時的效率,也可以直接操作 pixels
特性,這是一維陣列,每四個元素為一組,每一組元素以 r、g、b、alpha 排列,每一組代表一個像素資料,因此,若要將上例改為存取 pixels
的話會是:
你也可以透過 createImage
來建立 p5.Image
,然後設定像素資料,例如,底下範例建立了紅色的漸層色譜:
簡單來說,p5.Image
擁有的方法,可以讓你基於 p5.js 來進行影像處理,做個小畫家之類的線上影像編輯程式。