salopot / image-generator
Faker 的图像提供商:纯色、渐变、画廊、LoremPixel、PicsumPhotos、Unsplash、LoremFlickr、PlaceKitten、PlaceImg
1.1.0
2021-02-23 20:07 UTC
Requires
- php: >=7.1
- fakerphp/faker: ^1.9.1
- intervention/image: ^2.4
Requires (Dev)
- phpunit/phpunit: ^8.0||^9.5
This package is not auto-updated.
Last update: 2024-09-18 12:27:44 UTC
README
Faker 包 fzaninotto/Faker 的图像提供商,支持多种图像来源和基本图像处理
本地(快速且无需互联网连接)
- SolidColor - 生成单色填充的图像
- 画廊 - 使用本地目录中的图像作为源
- 渐变 - 生成渐变图像
远程
- LoremPixel - lorempixel.com(在原始 faker 中使用,现在非常不稳定)
- PicsumPhotos - picsum.photos
- Unsplash - unsplash.com
- LoremFlickr - loremflickr.com
- PlaceKitten - placekitten.com
- PlaceImg - placeimg.com 警告:选择器参数使用图像缩放
描述
- 支持多个本地和远程来源(你也可以自己编写)
- 支持基本图像处理
- 支持多种结果格式(data-url、文件、内容)
- 支持多种扩展
要求
- PHP >=7.1
- GD 库(>=2.0)
- Imagick PHP 扩展(>=6.5.7)
安装
composer require --dev salopot/image-generator
配置
$generator = \Faker\Factory::create(); $imageProvider = new \Salopot\ImageGenerator\ImageProvider($generator); // Configure some or all image sources $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Local\SolidColorSource($imageProvider)); $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Local\GallerySource($imageProvider, '/dir/with/images')); $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Local\SolidColorSource($imageProvider)); $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Remote\LoremPixelSource($imageProvider)); $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Remote\PicsumPhotosSource($imageProvider)); $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Remote\UnsplashSource($imageProvider)); $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Remote\PlaceKittenSource($imageProvider)); $imageProvider->addImageSource(new \Salopot\ImageGenerator\ImageSources\Remote\PlaceImgSource($imageProvider)); $generator->addProvider($imageProvider);
使用
基本示例
$url = $generator->imageGenerator(640, 480)->getDataUrl();
为获取相同图像的不同变化而分组随机图像
$item1MainImage = $generator->imageGenerator(640, 480, 'item-1')->getDataUrl(); $item1ThumbnailImage = $generator->imageGenerator(50, 50, 'item-1')->getDataUrl(); $item2MainImage = $generator->imageGenerator(640, 480, 'item-2')->getDataUrl(); $item2ThumbnailImage = $generator->imageGenerator(50, 50, 'item-2')->getDataUrl();
选择一个可用的来源。
$oneSourceUrl = $generator->imageGenerator(640, 480, null, 'SolidColor') ->grayscale()->getDataUrl(); $anotherSourceUrl = $generator->imageGenerator(640, 480, null, 'Unsplash') ->negative()->getDataUrl();
支持来自任何来源的相同图像处理
$filePath = $generator->imageGenerator(640, 480) ->setExtension('png') ->grayscale() ->opacity(95) ->contrast(30) ->gamma(1.6) ->brightness(15) ->blur(80) ->negative() ->insertImage('/path/to/logo.png','left', 'bottom') ->text('Hello world', 35, 'left', 'top', 30, -90) ->insertImage('/path/to/logo.png', 'right', 'top') ->getFilePath('/path/to/dir');
支持多种输出格式
$dataUrl = $generator->imageGenerator(640, 480)->getDataUrl(); $filePath = $generator->imageGenerator(640, 480)->getFilePath('/path/to/dir'); $content = $generator->imageGenerator(640, 480)->getContent();
### Laravel 在 Laravel 中注册 faker 并配置新的配置最简单的方法:将以下行添加到方法 app/Providers/AppServiceProvider.php::register
use Faker\Factory as FakerFactory; use Faker\Generator as FakerGenerator; use Salopot\ImageGenerator\ImageSources\Local; use Salopot\ImageGenerator\ImageSources\Remote; *** $this->app->singleton(FakerGenerator::class, function ($app) { $generator = FakerFactory::create($app['config']->get('app.faker_locale', 'en_US')); // Additional faker providers $imageProvider = new \Salopot\ImageGenerator\ImageProvider($generator); $imageProvider->addImageSource(new Local\SolidColorSource($imageProvider)); $imageProvider->addImageSource(new Local\GallerySource($imageProvider, '/dir/with/images')); $imageProvider->addImageSource(new Local\SolidColorSource($imageProvider)); $imageProvider->addImageSource(new Remote\LoremPixelSource($imageProvider)); $imageProvider->addImageSource(new Remote\PicsumPhotosSource($imageProvider)); $imageProvider->addImageSource(new Remote\UnsplashSource($imageProvider)); $imageProvider->addImageSource(new Remote\PlaceKittenSource($imageProvider)); $imageProvider->addImageSource(new Remote\PlaceImgSource($imageProvider)); $generator->addProvider($imageProvider); return $generator; });
之后,您可以通过 DI 以所有标准的 Laravel 方法使用 faker(与 ImageGenerator 一起):工厂、resolve(\Faker\Generator::class)、构造函数注入