init
This commit is contained in:
123
example_usage.go
Normal file
123
example_usage.go
Normal file
@@ -0,0 +1,123 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/kevin/go-jdenticon/jdenticon"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Test the new public API with different input types
|
||||
|
||||
// 1. Generate SVG from email address
|
||||
fmt.Println("=== Generating SVG avatar for email ===")
|
||||
svg, err := jdenticon.ToSVG("user@example.com", 128)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("SVG length: %d characters\n", len(svg))
|
||||
fmt.Printf("SVG preview: %s...\n", svg[:100])
|
||||
|
||||
// Save SVG to file
|
||||
err = os.WriteFile("avatar_email.svg", []byte(svg), 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("✅ Saved to avatar_email.svg")
|
||||
|
||||
// 2. Generate PNG from username
|
||||
fmt.Println("\n=== Generating PNG avatar for username ===")
|
||||
png, err := jdenticon.ToPNG("johndoe", 64)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("PNG size: %d bytes\n", len(png))
|
||||
|
||||
// Save PNG to file
|
||||
err = os.WriteFile("avatar_username.png", png, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("✅ Saved to avatar_username.png")
|
||||
|
||||
// 3. Generate with custom configuration
|
||||
fmt.Println("\n=== Generating with custom config ===")
|
||||
config, err := jdenticon.Configure(
|
||||
jdenticon.WithHueRestrictions([]float64{120, 240}), // Blue/green hues only
|
||||
jdenticon.WithColorSaturation(0.8),
|
||||
jdenticon.WithBackgroundColor("#ffffff"), // White background
|
||||
jdenticon.WithPadding(0.1),
|
||||
)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
customSvg, err := jdenticon.ToSVG("custom-avatar", 96, config)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = os.WriteFile("avatar_custom.svg", []byte(customSvg), 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("✅ Saved custom styled avatar to avatar_custom.svg")
|
||||
|
||||
// 4. Test different input types
|
||||
fmt.Println("\n=== Testing different input types ===")
|
||||
inputs := []interface{}{
|
||||
"hello world",
|
||||
42,
|
||||
3.14159,
|
||||
true,
|
||||
[]byte("binary data"),
|
||||
}
|
||||
|
||||
for i, input := range inputs {
|
||||
svg, err := jdenticon.ToSVG(input, 48)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
filename := fmt.Sprintf("avatar_type_%d.svg", i)
|
||||
err = os.WriteFile(filename, []byte(svg), 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("✅ Generated avatar for %T: %v -> %s\n", input, input, filename)
|
||||
}
|
||||
|
||||
// 5. Show hash generation
|
||||
fmt.Println("\n=== Hash generation ===")
|
||||
testValues := []interface{}{"test", 123, []byte("data")}
|
||||
for _, val := range testValues {
|
||||
hash := jdenticon.ToHash(val)
|
||||
fmt.Printf("Hash of %v (%T): %s\n", val, val, hash)
|
||||
}
|
||||
|
||||
// 6. Generate avatars for a group of users
|
||||
fmt.Println("\n=== Group avatars ===")
|
||||
users := []string{
|
||||
"alice@company.com",
|
||||
"bob@company.com",
|
||||
"charlie@company.com",
|
||||
"diana@company.com",
|
||||
}
|
||||
|
||||
for _, user := range users {
|
||||
png, err := jdenticon.ToPNG(user, 80)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
filename := fmt.Sprintf("user_%s.png", user[:5]) // Use first 5 chars as filename
|
||||
err = os.WriteFile(filename, png, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("✅ Generated avatar for %s -> %s\n", user, filename)
|
||||
}
|
||||
|
||||
fmt.Println("\n🎉 All avatars generated successfully!")
|
||||
fmt.Println("Check the generated SVG and PNG files in the current directory.")
|
||||
}
|
||||
Reference in New Issue
Block a user