如题,关键不是图怎么样,而是说,go可以拿来实现动态图验证码,加上go支持cgi、fcgi,完全可以做个exe拿去增补现有的服务器么。

ball.go
package main
import (
"github.com/hydra13142/cube"
"github.com/hydra13142/geom"
"github.com/hydra13142/paint"
"image"
"image/color/palette"
"image/gif"
"math"
"os"
)
var (
pln *cube.Plain
unx cube.Vector
uny cube.Vector
)
const (
H = 18
W = 36
)
func init() {
pln, _ = cube.NewPlain(cube.Point{}, cube.Vector{4, 4, 3})
uny = cube.FromTo(cube.Point{}, pln.VerticalPoint(cube.Point{0, 0, 10})).Unit()
unx = cube.OuterProduct(uny, cube.Vector{4, 4, 3}).Unit()
}
func main() {
var x [H + 1][W]cube.Point
var y [H + 1][W]geom.Point
dz := math.Pi / H
dxy := math.Pi * 2 / W
for i := 0; i <= H; i++ {
az := float64(i)*dz - math.Pi/2
r := 140 * math.Cos(az)
z := 140 * math.Sin(az)
for j := 0; j < W; j++ {
axy := float64(j) * dxy
x[i][j] = cube.Point{math.Cos(axy) * r, math.Sin(axy) * r, z}
}
}
pics := make([]*image.Paletted, 0, 20)
img := paint.Image{
FR: paint.Green,
BG: paint.White,
}
stp := dxy / 20
delay := make([]int, 0, 20)
for t := 0; t < 20; t++ {
img.Image = image.NewPaletted(image.Rect(0, 0, 300, 300), palette.Plan9)
for i := 0; i <= H; i++ {
for j := 0; j < W; j++ {
ox := cube.FromTo(cube.Point{}, x[i][j])
y[i][j] = geom.Point{cube.InnerProduct(ox, unx), cube.InnerProduct(ox, uny)}
a, b := x[i][j].X, x[i][j].Y
x[i][j].X = a*math.Cos(stp) - b*math.Sin(stp)
x[i][j].Y = b*math.Cos(stp) + a*math.Sin(stp)
}
}
for i := 0; i < H; i++ {
for j := 0; j < W; j++ {
img.Line(
150+int(y[i][j].X),
150-int(y[i][j].Y),
150+int(y[i][(j+1)%W].X),
150-int(y[i][(j+1)%W].Y),
)
img.Line(
150+int(y[i][j].X),
150-int(y[i][j].Y),
150+int(y[i+1][j].X),
150-int(y[i+1][j].Y),
)
}
}
pics = append(pics, img.Image.(*image.Paletted))
delay = append(delay, 5)
}
file, _ := os.Create("ball.gif")
defer file.Close()
gif.EncodeAll(file, &gif.GIF{
Image: pics,
Delay: delay,
LoopCount: 5 * len(delay),
})
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。