Go 語言的圖像過濾工具包 Gift


手冊(cè)說明

Gift 包提供一整套有用的圖像處理過濾器。

完全使用 Go 語言,沒有 Go 標(biāo)準(zhǔn)庫之外的外部依賴。

安裝/更新

go get -u github.com/disintegration/gift

文檔

http://godoc.org/github.com/disintegration/gift

快速開始

// 1. 創(chuàng)建一個(gè)新的 GIFT 過濾器列表以及添加一些過濾器
g := gift.New(
    gift.Resize(800, 0, gift.LanczosResampling),
    gift.UnsharpMask(1.0, 1.0, 0.0),
)
// 2. 創(chuàng)建一個(gè)相應(yīng)大小的新圖像
// dst 是一個(gè)新的目標(biāo)圖像,src 是原始圖像
dst := image.NewRGBA(g.Bounds(src.Bounds()))
// 3. 使用 Draw 函數(shù)將過濾器應(yīng)用到 src 并將結(jié)果存儲(chǔ)到 dst
g.Draw(dst, src)

用法

New 函數(shù)用于創(chuàng)建過濾器的序列:

g := gift.New(
    gift.Grayscale(),
    gift.Contrast(10),
)

過濾器也可以使用 Add 方法被添加:

g.Add(GaussianBlur(2))

Bounds 方法獲取原始圖像的界限并為目的圖像返回相應(yīng)的界限以適應(yīng)結(jié)果(例如使用 Resize 或 Rotate 過濾器后)

dst := image.NewRGBA(g.Bounds(src.Bounds()))

支持的過濾器

轉(zhuǎn)換

  • Crop(rect image.Rectangle)

  • CropToSize(width, height int, anchor Anchor)

  • FlipHorizontal()

  • FlipVertical()

  • Resize(width, height int, resampling Resampling)

  • ResizeToFill(width, height int, resampling Resampling, anchor Anchor)

  • ResizeToFit(width, height int, resampling Resampling)

  • Rotate(angle float32, backgroundColor color.Color, interpolation Interpolation)

  • Rotate180()

  • Rotate270()

  • Rotate90()

  • Transpose()

  • Transverse()

調(diào)整與效果

  • Brightness(percentage float32)

  • ColorBalance(percentageRed, percentageGreen, percentageBlue float32)

  • ColorFunc(fn func(r0, g0, b0, a0 float32) (r, g, b, a float32))

  • Colorize(hue, saturation, percentage float32)

  • ColorspaceLinearToSRGB()

  • ColorspaceSRGBToLinear()

  • Contrast(percentage float32)

  • Convolution(kernel []float32, normalize, alpha, abs bool, delta float32)

  • Gamma(gamma float32)

  • GaussianBlur(sigma float32)

  • Grayscale()

  • Hue(shift float32)

  • Invert()

  • Maximum(ksize int, disk bool)

  • Mean(ksize int, disk bool)

  • Median(ksize int, disk bool)

  • Minimum(ksize int, disk bool)

  • Pixelate(size int)

  • Saturation(percentage float32)

  • Sepia(percentage float32)

  • Sigmoid(midpoint, factor float32)

  • Sobel()

  • UnsharpMask(sigma, amount, thresold float32)


過濾器示例

調(diào)整之使用 lanczos 算法重新采樣

原始圖像

處理后圖像

調(diào)整之使用線性算法重采樣

原始圖像

處理后圖像

調(diào)整大小以適應(yīng) 160x160 像素邊框

原始圖像

處理后圖像

旋轉(zhuǎn) 270 度

原始圖像

處理后圖像

水平翻轉(zhuǎn)

原始圖像

處理后圖像

飽和度提高 50%

原始圖像

處理后圖像

更新記錄

在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)