GO 图像操作-线性渐变
小于 1 分钟
GO 图像操作 - 线性渐变
GO 1.20 以下为线性渐变代码-支持四种方向:
- 0 - x轴
- 1 - y轴
- 2 - 左上到右下
- 3 - 右上到左下
其他方法
- img.Mul 为颜色乘以指定常数方法
- img.Add 为颜色RGB值相加 详见:图像处理-缩放.md
package img
import (
"image"
"image/color"
)
// LinearGradient 线性渐变
// mode 为方向, 0 - x轴, 1 - y轴, 2 - 左上到右下, 3 - 右上到左下 | 其他值无效
func LinearGradient(start, end color.Color, width, height int, mode int) image.Image {
r := image.NewRGBA(image.Rect(0, 0, width, height))
for x := 0; x < width; x++ {
for y := 0; y < height; y++ {
var rate float64 = 0
switch mode {
case 0:
rate = float64(x) / float64(width)
break
case 1:
rate = float64(y) / float64(height)
break
case 2:
rate = float64(x+y) / float64(width+height)
break
case 3:
rate = float64(width-x+y) / float64(width+height)
}
r.Set(x, y, img.Add(img.Mul(start, 1-rate), img.Mul(end, rate)))
}
}
return r
}