jbroutier/image-generator

此包已被放弃且不再维护。没有推荐替代包。

离线随机占位图生成器。

1.0.0 2023-06-01 15:56 UTC

This package is auto-updated.

Last update: 2023-07-25 09:15:06 UTC


README

CI PHP version License Packagist

图像生成器

离线随机占位图生成器。

这是对 standaniels/image-generator 的重写,保持了包的整体目标,但增加了许多功能,包括

  • 更多输出格式:AVIF (PHP 8.1+)、BMP、GIF、JPEG、PNG、WBMP、WebP、XMB。
  • 更多颜色选项。
  • 更多形状选项。
  • 支持透明背景。
  • 不依赖于 ext-exif
  • 完全兼容 PHP 8.0+。

基本示例

<?php

use ImageGenerator\Canvas;
use ImageGenerator\Color;
use ImageGenerator\Shape\Shape;

$canvas = Canvas::create(400, 400);

for ($i = 0; $i < 100; $i++) {
    $canvas->draw(Shape::random(), Color::random());
}

$canvas->render('output.png');

生成的图像将看起来像这样

(Example)

高级示例

背景颜色

可以定义背景颜色,使用半透明背景或完全透明的背景。

// Fully-transparent background
$canvas->enableTransparency();

// Semi-transparent light background.
$canvas->enableTransparency();
$canvas->fill(Color::create(236, 240, 241, 0.55));

// Fully-opaque dark background
$canvas->fill(Color::create(44, 62, 80, 1));

形状

// Circles only
$canvas->draw(Circle::random(), Color::random());

// Hexagons only
$canvas->draw(Polygon::random(['min_sides' => 6, 'max_sides' => 6]), Color::random());

// Stars with 5 to 7 points
$canvas->draw(Star::random(['min_points' => 5, 'max_points' => 7]), Color::random());

颜色

// Semi-transparent shade of blue
$canvas->draw(Shape::random(), Color::create(41, 128, 185, 0.65));

// Fully-opaque shade of green
$canvas->draw(Shape::random(), Color::create(39, 174, 96, 1));

形状大小比

形状的大小将根据画布的大小自动计算。然而,可以调整大小比以获得更小或更大的形状。

// With random shapes
$shape = Shape::random([
    'circle' => [
        'min_ratio' => 0.0625,
        'max_ratio' => 0.125,
    ],
]);

// With a single shape
$shape = Shape::circle([
    'min_ratio' => 0.0625,
    'max_ratio' => 0.125,
]);

Alpha范围

可以调整透明度范围或完全关闭透明度。0表示完全透明的颜色,而1表示完全不透明的颜色。

// Full alpha range
$color = Color::random([
    'min_alpha' => 0,
    'max_alpha' => 1
]);

// Fully-opaque colors
$color = Color::random([
    'min_alpha' => 1,
    'max_alpha' => 1
]);

输出格式

默认格式是PNG,但可以选择其他图像格式。请注意,AVIF格式的支持仅从PHP 8.1开始。对不同图像格式的支持取决于PHP的构建方式,并且可能因平台而异。

$canvas->render('output.avif' , 'avif');
$canvas->render('output.bmp'  , 'bmp' );
$canvas->render('output.gif'  , 'webp');
$canvas->render('output.jpeg' , 'jpeg');
$canvas->render('output.png'  , 'png' );
$canvas->render('output.wbmp' , 'wbmp');
$canvas->render('output.webp' , 'webp');
$canvas->render('output.xbm'  , 'xbm' );

图像质量

某些图像格式允许调整图像质量。选项直接传递给底层渲染函数。

$canvas->render('output.avif', 'avif', 80, 5); // Quality: 80, Speed: 5
$canvas->render('output.bmp' , 'bmp' , true ); // Enable compression
$canvas->render('output.jpeg', 'jpeg', 90   ); // Quality: 90
$canvas->render('output.png' , 'png' , 9    ); // Compression level: 9
$canvas->render('output.webp', 'webp', 80   ); // Quality: 80