maltyxx/images-generator

Faker 的占位图生成器

1.0.1 2022-02-23 15:50 UTC

This package is auto-updated.

Last update: 2024-08-23 21:31:32 UTC


README

使用 GDFakerPHP/Faker 生成占位图类型图像

Sample image

Build Status

此项目的目标是什么?

Faker 是一个惊人的工具,可以快速生成看起来很真实的假数据。您可以参考其文档以了解更多关于它能够做什么的强大功能。

Faker 的一个很好的选项是能够使用 LoremPixelPlaceholder 获取漂亮的图片。它工作得很好,但也有一些缺点

  • 由于使用外部数据源,图像生成需要在联网环境中完成。这可能对大多数使用场景来说是可行的,但如果您需要在没有互联网连接的环境中生成数据,可能会出现问题。
  • 此外,由于同样的原因,获取大量图片可能需要非常长的时间,因为它需要下载每一张图片。如果您想用数百张图片填充数据,可能会出现问题。
  • 最后,LoremPixelPlaceholder 只生成 JPEG 图片,这可能会占用大量存储空间。

images-generator 正是为了解决这个问题而出现的。所有图片都是直接由您的当前 PHP 设置使用 GD 生成的,GD 是 PHP 中图像处理的几乎标准。

images-generator 对于单元测试、集成服务器、固定值和其他许多情况都非常有用...

使用 images-generator 的优势

  • 快速图像生成
  • 无需互联网连接
  • 可以生成 JPEG 和 PNG 图片

使用 images-generator 的缺点

  • 不能生成逼真的图片:这会更复杂(并且速度较慢)。如果您需要真实内容,目前唯一的选择是坚持使用 LoremPixel 内容。

安装

最简单的方法是使用 composer

composer require --dev maltyxx/images-generator

或者,如果您愿意修改您的 composer.json 文件,请将此行添加到 "require" 部分

"maltyxx/images-generator": "~1.0"

使用

使用 ImagesGeneratorProvider 类与 Faker 结合使用以生成新图像

<?php
require __DIR__ .'/vendor/autoload.php';

use Maltyxx\ImagesGenerator\ImagesGeneratorProvider;

$faker = Faker\Factory::create();
$faker->addProvider(new ImagesGeneratorProvider($faker));
$image = $faker->imageGenerator();
?>
<img src="<?php echo $image; ?>">

它将在您的临时目录内生成一张 640*480 像素的黑色 PNG 图片(如果可用),并返回图片的完整路径,例如:'/tmp/13b73edae8443990be1aa8f1a483bc27.png'

参数

imageGenerator() 方法有很多参数。以下是默认值

imageGenerator($dir = null, $width = 640, $height = 480, $format = 'png', $fullPath = true, $text = null, $backgroundColor = null, $textColor = null)

描述

  • $dir: (字符串) 生成的图片文件路径。必须是可写的。如果省略,将默认为系统临时目录(通常为 Linux 系统上的 /tmp)。
  • $width: (整数) 图片的宽度(像素),默认为 640。
  • $height: (整数) 图片的高度(像素),默认为 480。
  • $format: (字符串) 输出图片文件的格式,可以接受 jpg, jpeg 或 png 作为有效值,默认为 png。
  • $fullPath: (布尔值) 如果为true,则返回生成的文件的完整路径,否则仅返回文件名,默认为true。
  • $text: (字符串) 如果给定,将在图片上输出文本。将尝试使字体大小适应图片大小。默认为null(无文本)。可以使用特殊值,如果设置为true,则将返回图片的宽度和高度作为文本(例如:640x480)。
  • $backgroundColor: (字符串) 十六进制颜色值(如'#1f1f1f''1f1f1f'),默认为黑色。
  • $textColor: (字符串) 十六进制颜色值(如'#ff2222''ff2222'),默认为白色。

示例

  • $faker->imageGenerator(null, 640, 480, 'png', false, true, '#1f1f1f', '#ff2222') 将生成一个640x480的深灰色png图片,其中包含红色文本'640x480',并返回如下的文件名

Sample image

  • $faker->imageGenerator('img', 640, 480, 'png', true, 'Faker', '#0018ff', '#ffd800') 将生成一个640x480的蓝色png图片,其中包含黄色文本'Faker',并保存在项目中的img目录下,并返回如下的完整路径'img/f523f8bec6ed65fb1d63ae8d09850f9c.png'

Sample image

使用Faker的强大功能的一个更复杂的示例

  • $faker->imageGenerator('img', $faker->numberBetween(600, 800), $faker->numberBetween(400, 600), 'jpg', true, $faker->word, $faker->hexColor, $faker->hexColor) 将返回一个随机颜色图片的jpeg,其宽度在600到800像素之间,高度在400到600像素之间,其中包含随机单词,并使用随机颜色!这可以生成如下的图片

Sample image

生成器的种子

images-generator 不直接使用Faker的种子功能。但您仍然可以使用它来生成不同的参数值。例如,此代码将始终输出相同的绿色图片和相同的文本(dolorum)

$faker->seed(1234);
$image = $faker->imageGenerator('img', $faker->numberBetween(600, 800), $faker->numberBetween(400, 600), 'jpg', true, $faker->word, $faker->hexColor, $faker->hexColor);

Sample image

未来的开发

这是第一个版本,它应该适用于大多数使用情况。但我已经为未来的版本设定了一些目标

  • 添加对ImageMagick和/或GraphicsMagick的支持,以加快图片的生成。
  • Nelmio/Alice中添加对images-generator的支持。
  • 添加生成identicon类型图片的功能
  • 添加单元测试

否则,任何建议都受欢迎!您可以分支此项目并提交您的PR。

测试

目前没有包含单元测试(见未来开发)。

许可

images-generator 在MIT许可下发布。有关详细信息,请参阅附带LICENSE文件。

此项目中包含的Roboto字体文件在Roboto存储库中,根据Apache许可2.0条款发布。