leroy / liip-imagine-entity-annotation-bundle
使用实体轻松管理您的 liip imagine 过滤器
0.1.0
2022-10-21 09:49 UTC
Requires
- php: >=7.4
- liip/imagine-bundle: ^2.8
- symfony/framework-bundle: ^5.2||^6.1
This package is auto-updated.
Last update: 2024-09-25 15:57:08 UTC
README
LiipImagineEntityAnnotationBundle 已经设计用来简化使用LiipImagineBundle 过滤器的实体类。
它与以下兼容
安装
确保全局已安装 Composer,如 Composer 文档中的安装章节所述。
使用 Symfony Flex 的应用程序
打开命令行控制台,进入您的项目目录并执行
$ composer require leroy/liip-imagine-entity-annotation-bundle
不使用 Symfony Flex 的应用程序
步骤 1: 下载 Bundle
打开命令行控制台,进入您的项目目录并执行以下命令以下载此 Bundle 的最新稳定版本
$ composer require leroy/liip-imagine-entity-annotation-bundle
步骤 2: 启用 Bundle
然后,通过将其添加到项目中 config/bundles.php 文件中注册的 Bundle 列表中来启用该 Bundle
// config/bundles.php return [ // ... Leroy\LiipImagineEntityAnnotationBundle\LiipImagineEntityAnnotationBundle::class => ['all' => true], ];
用法
给定以下过滤器配置
liip_imagine: # valid drivers options include "gd" or "gmagick" or "imagick" driver: "gd" resolvers : default : web_path : ~ filter_sets : cache : ~ # the name of the "filter set" my_thumb : # adjust the image quality to 75% quality : 75 # list of transformations to apply (the "filters") filters : # create a thumbnail: set size to 120x90 and use the "outbound" mode # to crop the image when the size ratio of the input differs thumbnail : { size : [120, 90], mode : outbound } # create a 2px black border: center the thumbnail on a black background # 4px larger to create a 2px border around the final image background : { size : [124, 94], position : center, color : '#000000' }
基本(原始图片路径存储在一个属性中)
如果原始图片路径直接可访问在实体的一个属性中
<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\HttpFoundation\File\File; use Leroy\LiipImagineEntityAnnotationBundle\Annotation\LiipImagineFilter; class ImageEntity { public $path = "/my_image.jpg"; // LiipImagine properties #[LiipImagineFilter(filter: 'my_thumb', path: 'path')] private string $thumbnail = ''; public function getThumbnail(): string { return $this->thumbnail; } public function setThumbnail(string $thumbnail): self { $this->thumbnail = $thumbnail; return $this; } }
使用 VichUploader
如果原始图片使用 VichUploaderBundle 存储
<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\HttpFoundation\File\File; use Vich\UploaderBundle\Mapping\Annotation as Vich; use Leroy\LiipImagineEntityAnnotationBundle\Annotation\LiipImagineFilter; #[ORM\Entity()] /** * @Vich\Uploadable */ class ImageEntity { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(type: "datetime")] private \DateTime $updatedAt; #[ORM\Column(length: 255)] private ?string $filename = null; /** * @Vich\UploadableField(mapping="images", fileNameProperty="filename") * @var File */ private ?File $file; // LiipImagine properties #[LiipImagineFilter(filter: 'my_thumb', vichField: 'file')] public function __construct() { $this->updatedAt = new \DateTime(); } public function getId(): ?int { return $this->id; } public function getFilename(): ?string { return $this->filename; } public function setFilename(string $filename): self { $this->filename = $filename; return $this; } public function getUpdatedAt(): \DateTime { return $this->updatedAt; } public function setUpdatedAt(\Datetime $updatedAt): self { $this->updatedAt = $updatedAt; return $this; } public function getFile(): ?File { return $this->file; } public function setFile(File $file = null): self { $this->file = $file; if ($file) { $this->updatedAt = new \DateTime('now'); } return $this; } public function getThumbnail(): string { return $this->thumbnail; } public function setThumbnail(string $thumbnail): self { $this->thumbnail = $thumbnail; return $this; } }