efrontsa/images-generator
Faker 的占位图生成器
Requires
- php: >=5.3.0
- fzaninotto/faker: ~1.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-04 19:33:28 UTC
README
使用 GD 为 fzaninotto/Faker 生成占位图类型图片
这个项目的目标是什么?
Faker 是一个神奇的工具,可以快速生成看起来很真实的假数据。您可以参考其文档来了解更多关于它所能做的事情。
Faker 的一项优秀选项是能够使用 LoremPixel 获取漂亮的图片。它工作得很好,但也有一些缺点
- 由于使用外部数据源,图像生成需要在连接的环境中完成。对于大多数用途来说可能没问题,但如果您需要在没有互联网连接的地方生成数据,可能会成为问题。
- 此外,由于同样的原因,获取大量图片可能需要非常长的时间,因为它会下载每张图片。如果您想用数百张图片填充数据,可能会出现问题。
- 最后,LoremPixel 只生成 JPEG 图片,这可能会占用大量的存储空间。
images-generator 正是为了解决这个问题而出现的。所有图片都直接使用您当前的 PHP 配置和 GD(PHP 中图像处理的几乎标准)生成。
images-generator 对于单元测试、集成服务器、固定值和许多其他情况都非常有用...
使用 images-generator 的优势
- 快速图像生成
- 无需互联网连接
- 可以生成 JPEG 和 PNG 图片
使用 images-generator 的缺点
- 无法生成逼真的图片:这会更复杂(并且更慢)。如果您需要真实内容,现在唯一的选择是坚持使用 LoremPixel 内容。
安装
最简单的方法是使用 composer
composer require bheller/images-generator
或者如果您更喜欢,可以通过修改您的 composer.json 文件,将此行添加到 "require" 部分
"bheller/images-generator": "~1.0"
用法
使用 ImagesGeneratorProvider 类和 Faker 一起生成新图片
<?php
require __DIR__ .'/vendor/autoload.php';
use bheller\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”中返回类似这样的文件名
$faker->imageGenerator('img', 640, 480, 'png', true, 'Faker', '#0018ff', '#ffd800')将生成一个640x480的蓝色png图片,其中包含黄色文本“Faker”,并位于您的项目的img目录中,并返回类似这样的完整路径'img/f523f8bec6ed65fb1d63ae8d09850f9c.png'
使用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像素之间,随机单词用随机颜色书写!这可能生成如下图片
生成器的播种
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);
未来发展
这是第一个版本,它应该适用于大多数用途。但我已经为未来的版本设定了一些目标
- 添加对ImageMagick和/或GraphicsMagick的支持,以实现更快的图片生成。
- 在Nelmio/Alice中添加对images-generator的支持。
- 添加生成identicon类型图片的能力
- 添加单元测试
否则,任何建议都受欢迎!您可以分叉此项目并提交您的PR。
测试
目前没有包含单元测试(请参阅未来发展)。
许可证
images-generator是在MIT许可证下发布的。有关详细信息,请参阅捆绑的LICENSE文件。




