使用 fogleman/gg
和 disintegration/imaging
图像处理库绘制图片的一些小技巧,这些技巧中的大多数都可以组合使用,
有一些方法比较类似 Photoshop 的图层操作,有一些又类似蒙版,可以考虑实操看效果。
缩小并旋转图片
缩小并旋转图片,是使用 disintegration/imaging
处理库,组合了 Resize
和 Rotate
方法,并利用这个处理库的抗锯齿支持,实现较为美观的缩放旋转处理。
要实现缩放旋转,需要定义几个参数:
- angle - 转动角度
- zoomWidth/zoomHeight - 缩放宽度或者高度,任意一个值是 0 表示在这个方向上等比缩放
对于抗锯齿,我们统一使用 Lanczos
算法,在 imaging
中是 imaging.Lanczos
重采样过滤器,可以实现最佳效果的抗锯齿渲染。
|
|
给图片增加圆角遮罩
在前一篇文章 Golang 绘制圆角遮罩 中我们介绍了两种 用于绘制圆角遮罩的方法,我们采取其中一种比较简单易懂的来实现。
要实现圆角遮罩,需要定义几个参数:
- width - 原始图片宽度像素
- height - 原始图片高度像素
- cornerRadius - 圆角半径像素
具体步骤是:
- 创建一个带透明背景的画布
- 创建一个圆角矩形,并作为绘图区域
- 把原始图像绘入绘图区域
|
|
给图片加上外边框渐变阴影
使用 fogleman/gg
处理库,对原始图像加上外边框渐变阴影,可以理解为在原始图像的底层加上一个绘制了渐变淡出边框的图层,并非添加蒙版。
要实现这一效果,需要定义几个参数:
- borderWidth - 边框宽度像素
- cornerRadius - 渐变图层圆角半径像素,也可以不定义,由原图宽度计算获得
因为渐变是一层一层画出来的,所以这里的边框宽度像素其实是设置了我们要循环多少次来画多少个外边框,一层一层逐渐减小 alpha 通道值,直到 alpha == 0.0
。
|
|
进阶
对一张图改圆角,加阴影,再旋转
|
|