模組gd
gd 模組是對影像進行處理的模組,提供了創建、操作、儲存影像的功能,並提供了豐富的顏色、濾鏡、繪製等相關操作。
下面是一個範例程式碼,使用gd 模組建立並操作一張圖像:
1
2
3
4
5
6
7
8
9
10var gd = require('gd');
var img = gd.create(440, 240); // create a 440x240 truecolor image
var r = img.colorAllocate(255, 0, 0); // allocate two colors
var b = img.colorAllocate(0, 0, 255);
img.rectangle(40, 40, 50, 50, r); // draw a rectangle
img.filledEllipse(80, 100, 30, 50, b); // fill a ellipse
var data = img.getData(gd.PNG); // save image as PNG data
在這個範例中,我們首先使用create() 方法建立一張440x240 的TRUECOLOR 映像,並用colorAllocate() 方法建立一張440x240 的TRUECOLOR 映像,並用colorAllocate() 方法來建立一張440x240 的TRUECOLOR 影像,並用colorAllocate() 方法來建立兩個顏色,接著使用rectangle() 方法繪製矩形,在矩形的右上方繪製了一個填滿的橢圓,最後使用getData() 方法將影像儲存為PNG 格式的二進位資料。
靜態函數
create
建立一個新映像
1
2
3static Image gd.create(Integer width,
Integer height,
Integer color = gd.TRUECOLOR) async;
呼叫參數:
- width: Integer, 指定圖像寬度
- height: Integer, 指定圖像高度
- color: Integer, 指定影像類型,允許值為gd.TRUECOLOR或gd.PALETTE
回傳結果:
- Image, 傳回創建成功的圖像對象
load
從格式資料解碼影像
1static Image gd.load(Buffer data) async;
呼叫參數:
- data:Buffer, 給定解碼的圖像數據
回傳結果:
- Image, 返回解碼成功的圖像對象
從串流物件解碼影像
1static Image gd.load(SeekableStream stm) async;
呼叫參數:
- stm:SeekableStream, 給定影像資料所在的流對象
回傳結果:
- Image, 返回解碼成功的圖像對象
從指定檔案解碼圖像
1static Image gd.load(String fname) async;
呼叫參數:
- fname: String, 指定檔名
回傳結果:
- Image, 返回解碼成功的圖像對象
rgb
透過rgb 顏色分量產生組合顏色
1
2
3static Integer gd.rgb(Integer red,
Integer green,
Integer blue);
呼叫參數:
- red: Integer, 紅色分量,範圍為0-255
- green: Integer, 綠色分量,範圍為0-255
- blue: Integer, 藍色分量,範圍為0-255
回傳結果:
- Integer, 傳回組合顏色
rgba
透過rgba 顏色分量產生組合顏色
1
2
3
4static Integer gd.rgba(Integer red,
Integer green,
Integer blue,
Number alpha);
呼叫參數:
- red: Integer, 紅色分量,範圍為0-255
- green: Integer, 綠色分量,範圍為0-255
- blue: Integer, 藍色分量,範圍為0-255
- alpha: Number, 透明分量,範圍為0.0-1.0
回傳結果:
- Integer, 傳回組合顏色
hsl
透過hsl 顏色分量產生組合顏色
1
2
3static Integer gd.hsl(Number hue,
Number saturation,
Number lightness);
呼叫參數:
- hue: Number, 色相分量,範圍為0-360
- saturation: Number, 飽和度分量,範圍為0.0-1.0
- lightness: Number, 亮度分量,範圍為0.0-1.0
回傳結果:
- Integer, 傳回組合顏色
hsla
透過hsla 顏色分量產生組合顏色
1
2
3
4static Integer gd.hsla(Number hue,
Number saturation,
Number lightness,
Number alpha);
呼叫參數:
- hue: Number, 色相分量,範圍為0-360
- saturation: Number, 飽和度分量,範圍為0.0-1.0
- lightness: Number, 亮度分量,範圍為0.0-1.0
- alpha: Number, 透明分量,範圍為0.0-1.0
回傳結果:
- Integer, 傳回組合顏色
hsb
透過hsb 顏色分量產生組合顏色
1
2
3static Integer gd.hsb(Number hue,
Number saturation,
Number brightness);
呼叫參數:
- hue: Number, 色相分量,範圍為0-360
- saturation: Number, 飽和度分量,範圍為0.0-1.0
- brightness: Number, 明亮程度分量,範圍為0.0-1.0
回傳結果:
- Integer, 傳回組合顏色
hsba
透過hsba 顏色分量產生組合顏色
1
2
3
4static Integer gd.hsba(Number hue,
Number saturation,
Number brightness,
Number alpha);
呼叫參數:
- hue: Number, 色相分量,範圍為0-360
- saturation: Number, 飽和度分量,範圍為0.0-1.0
- brightness: Number, 明亮程度分量,範圍為0.0-1.0
- alpha: Number, 透明分量,範圍為0.0-1.0
回傳結果:
- Integer, 傳回組合顏色
color
透過字串產生組合顏色
1static Integer gd.color(String color);
呼叫參數:
- color: String, 指定顏色的字串,如:"#ff0000", "ff0000", "#f00", "f00"
回傳結果:
- Integer, 傳回組合顏色
常量
NONE
影像格式常量,標示目前影像來源為未知
1const gd.NONE = 0;
JPEG
影像格式常數,標示目前影像來源為jpeg 格式數據
1const gd.JPEG = 1;
GIF
影像格式常量,標示目前影像來源為gif 格式數據
1const gd.GIF = 2;
PNG
影像格式常數,標示目前影像來源為png 格式數據
1const gd.PNG = 3;
TIFF
影像格式常量,標示目前影像來源為tiff 格式數據
1const gd.TIFF = 4;
BMP
影像格式常數,標示目前影像來源為bmp 格式數據
1const gd.BMP = 5;
WEBP
影像格式常數,標示目前影像來源為webp 格式數據
1const gd.WEBP = 6;
TRUECOLOR
影像類型常數,標示目前影像為真彩色影像
1const gd.TRUECOLOR = 0;
PALETTE
影像類型常數,標示目前影像為調色板影像
1const gd.PALETTE = 1;
ARC
扇形繪製樣式,繪製一條連接開始和結束點的圓弧
1const gd.ARC = 0;
CHORD
扇形繪製樣式,繪製一條連接原點,開始和結束點的直線
1const gd.CHORD = 1;
NOFILL
扇形繪製樣式,繪製不填滿的扇形
1const gd.NOFILL = 2;
EDGED
扇形繪製樣式,繪製一條連接起點和終點的弧和連接原點的直線
1const gd.EDGED = 4;
HORIZONTAL
鏡像方向,橫向做鏡像處理
1const gd.HORIZONTAL = 1;
VERTICAL
鏡像方向,縱向做鏡像處理
1const gd.VERTICAL = 2;
BOTH
鏡像方向,橫向和縱向都做鏡像處理
1const gd.BOTH = 3;
LEFT
旋轉方向,向左旋轉
1const gd.LEFT = 1;
RIGHT
旋轉方向,向右旋轉
1const gd.RIGHT = 2;
MEAN_REMOVAL
濾波器類型:用平均移除法來達到輪廓效果
1const gd.MEAN_REMOVAL = 0;
EDGEDETECT
濾波器類型:用邊緣偵測來突出影像的邊緣
1const gd.EDGEDETECT = 1;
EMBOSS
濾波器類型:使影像浮雕化
1const gd.EMBOSS = 2;
SELECTIVE_BLUR
濾波器類型:模糊影像
1const gd.SELECTIVE_BLUR = 3;
GAUSSIAN_BLUR
濾波器類型:用高斯演算法模糊影像
1const gd.GAUSSIAN_BLUR = 4;
NEGATE
濾波器類型:將影像中所有顏色反轉
1const gd.NEGATE = 5;
GRAYSCALE
濾波器類型:將影像轉換為灰階圖
1const gd.GRAYSCALE = 6;
SMOOTH
濾波器類型:使影像更柔滑,用arg1設定柔滑級別
1const gd.SMOOTH = 7;
BRIGHTNESS
濾波器類型:改變影像的亮度,用arg1設定亮度級別,取值範圍是-255~255
1const gd.BRIGHTNESS = 8;
CONTRAST
濾波器類型:改變影像的對比度,用arg1設定對比度級別,取值範圍是0~100
1const gd.CONTRAST = 9;
COLORIZE
濾波器類型:改變影像的色調,用arg1、arg2、arg3分別指定red、blue、green,每種顏色範圍是0~255,arg4為透明度,取值回傳為0~127
1const gd.COLORIZE = 10;