usarise/identicon

A PHP library for generating identicons.

0.8.0 2024-03-19 17:41 UTC

This package is auto-updated.

Last update: 2024-06-15 09:34:30 UTC


README

PHP Identicon Generator

PHP Version Latest Version License Total Downloads GitHub CI

Based and inspired on

test

Installation

composer require usarise/identicon

Usage browser

<?php

declare(strict_types=1);

require_once __DIR__ . '/vendor/autoload.php';

use Usarise\Identicon\Identicon;
use Usarise\Identicon\Image\Svg\Canvas as SvgCanvas;

$identicon = new Identicon(
    new SvgCanvas(),
    420,
);

$response = $identicon->generate('test');

header("Content-type: {$response->mimeType}");
echo (string) $response;

Usage write file

<?php

declare(strict_types=1);

require_once __DIR__ . '/vendor/autoload.php';

use Usarise\Identicon\Identicon;
use Usarise\Identicon\Image\Svg\Canvas as SvgCanvas;

$identicon = new Identicon(
    new SvgCanvas(),
    420,
);

$response = $identicon->generate('test');
$response->save("test.{$response->format}");

Usage data url

<?php

declare(strict_types=1);

require_once __DIR__ . '/vendor/autoload.php';

use Usarise\Identicon\Identicon;
use Usarise\Identicon\Image\Svg\Canvas as SvgCanvas;

$identicon = new Identicon(
    new SvgCanvas(),
    420,
);

$response = $identicon->generate('test');
$data = sprintf(
    'data:%s;base64,%s',
    $response->mimeType,
    base64_encode(
        (string) $response,
    ),
);
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Identicon Data URL example</title>
</head>
<body>
  <img src="<?php echo $data; ?>" />
</body>
</html>

Usage advanched

Construct

use Usarise\Identicon\Image\Svg\Canvas as SvgCanvas;
use Usarise\Identicon\{Identicon, Resolution};

$identicon = new Identicon(
    image: new SvgCanvas(), // implementation Usarise\Identicon\Image\CanvasInterface
    size: 420, // 420x420 pixels
    resolution: Resolution::Medium, // Resolution 10x10 (Default)
);

Image Canvas

Implementations Usarise\Identicon\Image\CanvasInterface from the box

use Usarise\Identicon\Image\Gd\Canvas as GdCanvas;
use Usarise\Identicon\Image\Imagick\Canvas as ImagickCanvas;
use Usarise\Identicon\Image\Svg\Canvas as SvgCanvas;

Gd extension (GD Library)

new GdCanvas()

Imagick extension (ImageMagick)

new ImagickCanvas()

SVG

new SvgCanvas()

Size

Output image height and width

Must be a positive multiple of the resolution

Example: 120 for resolution Resolution::Medium and 126 for resolution Resolution::Large

Resolutions

Pixel resolution of the pattern identicon

use Usarise\Identicon\Resolution;

6x6 (Tiny)

Resolution::Tiny

8x8 (Small)

Resolution::Small

10x10 (Medium)

Resolution::Medium

12x12 (Large)

Resolution::Large

14x14 (Huge)

Resolution::Huge

Generate

String

Username, id, email, ip, etc

$response = $identicon->generate(string: 'test')

Background

Hex color codes

$response = $identicon->generate(string: 'test', background: '#f2f1f2')

Foreground

Hex color codes

$response = $identicon->generate(string: 'test', foreground: '#84c7b5')

Background and Foreground

Hex color codes

$response = $identicon->generate(string: 'test', background: '#f2f1f2', foreground: '#84c7b5')

Response

Format

png, svg, other custom

$response->format // svg

Mime type

image/png, image/svg+xml, other custom

$response->mimeType // image/svg+xml

Output string

Compressed image

$response->output

Alternative $response->output: response object to string

Compressed image

(string) $response

Uncompressed image

object, string, null

$response->image // object

Save file

Allowed file extension only $response->format

$response->save(path: __DIR__ . '/test.svg')