Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Php Initial Avatar Generator Laravel Package

lasserafn/php-initial-avatar-generator

Generate initial-based avatar images in PHP. Create colorful letter avatars (e.g., user initials) for profiles and placeholders, with configurable size, font, colors, and shapes. Lightweight, framework-agnostic, easy to integrate in any app.

View on GitHub
Deep Wiki
Context7

Getting Started

First Steps

  1. Installation Add the package via Composer:

    composer require lasserafn/php-initial-avatar-generator
    

    No additional configuration is required—it’s a standalone library.

  2. Basic Usage Import the generator and create an avatar from a name:

    use Lasser\InitialAvatarGenerator\InitialAvatarGenerator;
    
    $generator = new InitialAvatarGenerator();
    $avatarUrl = $generator->generate('John Doe');
    

    Outputs a URL like:

    https://initial-avatar-generator.example.com/j/d/johndoe.png
    
  3. First Use Case Use it in a Laravel Blade template to display user avatars:

    <img src="{{ InitialAvatarGenerator::generate($user->name) }}" alt="Avatar" width="50">
    

Implementation Patterns

Common Workflows

  1. Dynamic Avatar Generation Generate avatars on-the-fly for users without uploaded images:

    $avatar = InitialAvatarGenerator::generate($user->full_name);
    
  2. Customization Override default colors or styles via constructor options:

    $generator = new InitialAvatarGenerator([
        'background_colors' => ['#FF5733', '#33FF57'],
        'text_color' => '#FFFFFF',
    ]);
    
  3. Caching Cache generated URLs to avoid regenerating for the same name:

    $cacheKey = 'avatar_' . md5($user->name);
    $avatarUrl = cache()->remember($cacheKey, now()->addHours(1), function() use ($user) {
        return InitialAvatarGenerator::generate($user->name);
    });
    
  4. Integration with Eloquent Add an accessor to your User model:

    public function getAvatarAttribute()
    {
        return InitialAvatarGenerator::generate($this->name);
    }
    

    Usage:

    <img src="{{ $user->avatar }}" alt="Avatar">
    
  5. API Responses Return avatars in JSON APIs:

    return response()->json([
        'user' => [
            'name' => $user->name,
            'avatar' => InitialAvatarGenerator::generate($user->name),
        ],
    ]);
    

Gotchas and Tips

Pitfalls

  1. Name Normalization The generator converts names to lowercase and replaces spaces with underscores. Example: "John Doe"j/d/johndoe.png. Fix: Pre-process names if you need custom formatting:

    $normalized = strtolower(str_replace(' ', '-', $user->name));
    
  2. URL Structure The default URL structure is /{first_letter}/{second_letter}/{slug}.png. If you host the generator elsewhere, ensure your server routes match this pattern.

  3. Performance Generating avatars on every request can be slow for high-traffic apps. Solution: Cache aggressively or pre-generate avatars for known users.

  4. Character Limits Very long names (e.g., "Supercalifragilisticexpialidocious User") may break the URL. Fix: Truncate or hash names:

    $shortName = substr($user->name, 0, 20);
    

Debugging Tips

  • Verify Output: Check the generated URL in a browser to ensure the image renders.
  • Log Errors: Wrap generation in a try-catch to log issues:
    try {
        $avatar = InitialAvatarGenerator::generate($name);
    } catch (\Exception $e) {
        Log::error("Avatar generation failed for {$name}: " . $e->getMessage());
        $avatar = asset('fallback-avatar.png');
    }
    

Extension Points

  1. Custom Backend Replace the default URL generation with your own storage (e.g., S3):

    $generator = new InitialAvatarGenerator();
    $generator->setStorage(new CustomStorageAdapter());
    
  2. Additional Metadata Extend the generator to include size or format parameters:

    $generator->generate('John Doe', ['size' => 100, 'format' => 'svg']);
    
  3. Theming Pass dynamic themes based on user roles:

    $theme = $user->isAdmin() ? 'admin' : 'default';
    $generator->setTheme($theme);
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
emuniq/filament-browser-notifications
syriable/filament-translator
hungnm28/livewire-form
wenprise/eloquent
crudly/encrypted
fadion/bouncy
cuci/prototurk-sdk
gos/pubsub-router-bundle
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui