Gift Go 语言的图像过滤工具包 Gift

agolangf • 1670 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
Gift 包提供一整套有用的图像处理过滤器。 完全使用 Go 语言,没有 Go 标准库之外的外部依赖。 安装/更新 <pre class="brush:shell;toolbar: true; auto-links: false;">go get -u github.com/disintegration/gift</pre> 文档 [http://godoc.org/github.com/disintegration/gift](http://godoc.org/github.com/disintegration/gift) 快速开始 <pre class="brush:cpp ;toolbar: true; auto-links: false;">// 1. 创建一个新的 GIFT 过滤器列表以及添加一些过滤器 g := gift.New(     gift.Resize(800, 0, gift.LanczosResampling),     gift.UnsharpMask(1.0, 1.0, 0.0), ) // 2. 创建一个相应大小的新图像 // dst 是一个新的目标图像,src 是原始图像 dst := image.NewRGBA(g.Bounds(src.Bounds())) // 3. 使用 Draw 函数将过滤器应用到 src 并将结果存储到 dst g.Draw(dst, src)</pre> 用法 New 函数用于创建过滤器的序列: <pre class="brush:cpp ;toolbar: true; auto-links: false;">g := gift.New(     gift.Grayscale(),     gift.Contrast(10), )</pre> 过滤器也可以使用 Add 方法被添加: <pre class="brush:cpp ;toolbar: true; auto-links: false;">g.Add(GaussianBlur(2))</pre> Bounds 方法获取原始图像的界限并为目的图像返回相应的界限以适应结果(例如使用 Resize 或 Rotate 过滤器后) <pre class="brush:cpp ;toolbar: true; auto-links: false;">dst := image.NewRGBA(g.Bounds(src.Bounds()))</pre> 支持的过滤器 转换 * 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() 调整与效果 * 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) 过滤器示例 调整之使用 lanczos 算法重新采样 原始图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_Slcm_2720166.jpeg) 处理后图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_qAGe_2720166.jpeg) 调整之使用线性算法重采样 原始图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_Slcm_2720166.jpeg) 处理后图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_pT8Y_2720166.jpeg) 调整大小以适应 160x160 像素边框 原始图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_Slcm_2720166.jpeg) 处理后图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_fE8k_2720166.jpeg) 旋转 270 度 原始图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_Slcm_2720166.jpeg) 处理后图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_Mpd7_2720166.jpeg) 水平翻转 原始图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_Slcm_2720166.jpeg) 处理后图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154218_tDzS_2720166.jpeg) 饱和度提高 50% 原始图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154217_Slcm_2720166.jpeg) 处理后图像 ![image](http://static.oschina.net/uploads/space/2016/0812/154218_R5qa_2720166.jpeg)
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
1670 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传