84 lines
1.9 KiB
Go
84 lines
1.9 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"os"
|
||
"strconv"
|
||
|
||
"github.com/landaiqing/go-pixelnebula"
|
||
"github.com/landaiqing/go-pixelnebula/style"
|
||
)
|
||
|
||
// 风格和主题示例
|
||
// 展示如何使用不同的风格和主题生成多个头像
|
||
func main() {
|
||
// 创建一个新的PixelNebula实例
|
||
pn := pixelnebula.NewPixelNebula()
|
||
|
||
// 定义要展示的风格数组
|
||
styles := []style.StyleType{
|
||
style.AteamStyle,
|
||
style.GirlStyle,
|
||
style.CountryStyle,
|
||
style.GeeknotStyle,
|
||
style.PunkStyle,
|
||
// 可以添加更多内置风格
|
||
}
|
||
|
||
// 为每种风格生成不同主题的头像
|
||
for styleIndex, styleType := range styles {
|
||
// 设置当前风格
|
||
pn.WithStyle(styleType)
|
||
|
||
// 获取风格名称用于文件命名
|
||
var styleName string
|
||
switch styleType {
|
||
case style.AteamStyle:
|
||
styleName = "ateam"
|
||
case style.GirlStyle:
|
||
styleName = "girl"
|
||
case style.CountryStyle:
|
||
styleName = "country"
|
||
case style.GeeknotStyle:
|
||
styleName = "geeknot"
|
||
case style.PunkStyle:
|
||
styleName = "punk"
|
||
default:
|
||
styleName = "unknown"
|
||
}
|
||
|
||
// 对每种风格,生成3个不同主题的头像
|
||
for themeIndex := 0; themeIndex < 3; themeIndex++ {
|
||
// 设置主题
|
||
pn.WithTheme(themeIndex)
|
||
|
||
// 设置尺寸
|
||
pn.WithSize(200, 200)
|
||
|
||
// 生成唯一ID - 这里使用风格和主题索引组合
|
||
uniqueID := "style-" + strconv.Itoa(styleIndex) + "-theme-" + strconv.Itoa(themeIndex)
|
||
|
||
// 生成SVG
|
||
svg, err := pn.Generate(uniqueID, false).ToSVG()
|
||
if err != nil {
|
||
fmt.Printf("生成风格%s主题%d的SVG失败: %v\n", styleName, themeIndex, err)
|
||
continue
|
||
}
|
||
|
||
// 文件名
|
||
filename := fmt.Sprintf("%s_theme_%d.svg", styleName, themeIndex)
|
||
|
||
// 保存到文件
|
||
err = os.WriteFile(filename, []byte(svg), 0644)
|
||
if err != nil {
|
||
fmt.Printf("保存文件%s失败: %v\n", filename, err)
|
||
continue
|
||
}
|
||
|
||
fmt.Printf("成功生成头像: %s\n", filename)
|
||
}
|
||
}
|
||
|
||
fmt.Println("所有风格和主题头像生成完成!")
|
||
}
|