# [Jdenticon-go](https://jdenticon.com)

Go library for generating highly recognizable identicons.

![Sample identicons](https://jdenticon.com/hosted/github-samples.png)

## Features

go-jdenticon is a Go port of the JavaScript library [Jdenticon](https://github.com/dmester/jdenticon).

* Renders identicons as PNG or SVG with no external dependencies
* Generates consistent, deterministic identicons from any input string
* Highly customizable color themes and styling options
* Simple, clean API for easy integration
* Command-line tool included for standalone usage

## Installation

```bash
go get github.com/kevin/go-jdenticon
```

## Usage

### Basic Usage

```go
package main

import (
    "fmt"
    "github.com/kevin/go-jdenticon/jdenticon"
)

func main() {
    // Generate an identicon
    icon := jdenticon.Generate("user@example.com", 200)
    
    // Get SVG output
    svg := icon.ToSVG()
    fmt.Println(svg)
    
    // Get PNG output
    png := icon.ToPNG()
    // Save or use PNG data...
}
```

### Custom Configuration

```go
config := &jdenticon.Config{
    Hue:        0.3,
    Saturation: 0.7,
    Lightness:  0.5,
    Padding:    0.1,
}

icon := jdenticon.GenerateWithConfig("user@example.com", 200, config)
```

### Command Line Tool

```bash
# Generate SVG
go run cmd/jdenticon/main.go -value "user@example.com" -size 200

# Generate PNG file
go run cmd/jdenticon/main.go -value "user@example.com" -format png -output icon.png
```

## API Reference

### Functions

- `Generate(value string, size int) *Icon` - Generate an identicon with default settings
- `GenerateWithConfig(value string, size int, config *Config) *Icon` - Generate with custom configuration
- `DefaultConfig() *Config` - Get default configuration settings

### Types

#### Icon
- `ToSVG() string` - Render as SVG string
- `ToPNG() []byte` - Render as PNG byte data

#### Config
- `Hue float64` - Color hue (0.0-1.0)
- `Saturation float64` - Color saturation (0.0-1.0)
- `Lightness float64` - Color lightness (0.0-1.0)
- `BackgroundColor string` - Background color (hex or empty for transparent)
- `Padding float64` - Padding as percentage of size (0.0-0.5)

## License

MIT License - see the original [Jdenticon](https://github.com/dmester/jdenticon) project for details.

## Contributing

Contributions are welcome! Please ensure all tests pass and follow Go conventions.

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
