Изменение а а м мера изображений

Изменение а а м мера изображений

Подизайнустраницыконференциифотографиидолжныбытьразмеромнеболе200 x150епикселей。Можеттогданамстоитоптимизироватьиуменьшатьизображения,вслучаееслизагруженныефотографиипревышаютуказанныймаксимальныйразмер吗?

Идеальнымрешениембудетвключитьтакуюоперациювбизнесп——роцесскомментария:послепроверкиипередпубликациейкомментария。

Давайте доба а с им но о о о ос о то и и准备好了ипереход优化

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
——/ config /包/ workflow.yaml+ + + b / config /包/ workflow.yaml@@ -16,6 +16,7 @@框架:- potential_spam - spam -拒绝+ -就绪- published transitions: accept: @@ -29,13 +30,16 @@ framework: to: spam publish: from: potential_spam- to:已发布+到:就绪Reject: from: potential_spam to: rejected publish_ham: from: ham- to:已发布+到:就绪Reject_ham:从:火腿到:被拒绝+优化:+来自:ready+到:已发布

Посмотрим,каквизуальновыглядитизмененныйбизнесп——роцесс,чтобыубедиться,чтоонкорректносоставлен:

1
欧宝娱乐app下载地址symfony控制台工作流:dump comment | dot - tng -o workflow.png

Оптимизация изображений с помощью想象一下

Оптимизировать изображения мод ем через модул иGD(должен б т т т т т т т т т т т те на а а а е ем ком м т т т те) и想象一下

1
欧宝娱乐app下载地址交响乐作曲家要求“想象/想象:^ 1.2”

Изменениеразмераизображениябудетпроисходитьвотдельномсервисномклассе:

src / ImageOptimizer.php
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
名称空间应用程序使用想象一下Gd想象一下使用想象一下图像盒子ImageOptimizer私人常量MAX_WIDTH =200私人常量MAX_HEIGHT =150私人想象一下公共函数__construct()->想象一下=想象();}公共函数调整(字符串文件名无效列表iwidthiheight) = getimagesize(文件名);iwidth/iheight宽度自我::MAX_WIDTH;高度自我::MAX_HEIGHT;如果宽度/高度>) {宽度高度;}其他的高度宽度/;}照片->想象一下->打开(文件名);照片->调整(框(宽度高度))->保存(文件名);}}

Послеоптимизациифотографиизаменяемисходныйфайлнановый。Хотя,возможно,покаким——либопричинамвырешитеоставитьоригинальноеизображение。

Добавление но о о о о о о о о ав б о о не ес

Добавьтевбизнесп——роцессобработкуновогосостояния:

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 46 47
——MessageHandler / src / / CommentMessageHandler.php+ + + MessageHandler b / src / / CommentMessageHandler.php@@ -2,6 +2,7 @@名称空间的应用程序\ MessageHandler;+使用App \ ImageOptimizer;使用App \ \ CommentMessage消息;使用App \ Repository \ CommentRepository;使用App \ SpamChecker;@@类CommentMessageHandler实现MessageHandlerInterface私有$bus;私人美元工作流;私人美元梅勒;+ private $imageOptimizer;私人adminEmail美元;+ private $photoDir;私人美元记录器;-公共函数__construct(EntityManagerInterface $entityManager, SpamChecker $ SpamChecker, CommentRepository $ CommentRepository, MessageBusInterface $bus, WorkflowInterface $commentStateMachine, MailerInterface $mailer, string $adminEmail, LoggerInterface $logger = null)+公共函数__construct(EntityManagerInterface $entityManager, SpamChecker $ SpamChecker, CommentRepository $ CommentRepository, MessageBusInterface $bus, WorkflowInterface $commentStateMachine, MailerInterface $mailer, ImageOptimizer $ ImageOptimizer, string $adminEmail, string $photoDir, LoggerInterface $logger = null){$this->entityManager = $entityManager;$this->spamChecker = $spamChecker;@@ -32,7 +35,9 @@类CommentMessageHandler实现MessageHandlerInterface $this->总线= $总线;$this->工作流= $commentStateMachine;$this->mailer = $mailer;+ $this->imageOptimizer = $imageOptimizer;$this->adminEmail = $adminEmail;+ $this->photoDir = $photoDir;$this->记录器= $记录器;} @@ -64,6 +69,12 @@类CommentMessageHandler实现MessageHandlerInterface ->to($this->adminEmail) ->context(['comment' => $comment]));+} elseif ($this->workflow->can($comment, 'optimize')) {+ if ($comment->getPhotoFilename()) {+ $ this - > imageOptimizer - >调整($ this - > photoDir‘/’。评论- > getPhotoFilename ());+}+ $this->工作流->应用($comment, '优化');+ $ this - > entityManager - >冲洗();} elseif ($this->logger) {$this->logger->debug('删除评论消息',['comment' => $comment->getId(), 'state' => $comment->getState()]);}

ОбратитевниманиенаавтоматическидоступнуюпеременнуюphotoDir美元,таккакранееводномизпредыдущихшаговкэтомуименипеременнойвконтейнеремыпривязалисоответствующийпараметр:

配置/ services.yaml
1 2 3 4
服务:_defaults:绑定:字符串$ photoDir:“% kernel.project_dir % /公共/上传照片”

Хранение загруженных данн н в п одак к о ен

В конф - и.platform.app.yamlужеуказанаспециальнаядиректориядлячтенияизаписизагруженныхфотографий。Однако она смо онти о ован о ол ок ол л но。Чтобыкданнойдиректорииимелидоступвеб-контейнериворкердляобработкисообщенийвочеред,инужносоздатьфайловыйсервис

1 2 3 4 5 6 7 8 9 10
——/ .platform / services.yaml+ + + b / .platform / services.yaml@@ -11,3 +11,7 @@ varnish: vcl: !包含类型:字符串路径:config.vcl++文件:+类型:network-storage:1.0+磁盘:256

Используйтеегодлядиректориизагруженныхфотографий:

1 2 3 4 5 6 7 8 9 10 11
——/ .platform.app.yaml+ + + b / .platform.app.yaml@@ -35,7 +35,7 @@ web: mounts: "/var": {source: local, source_path: var}- "/public/uploads": {source: local, source_path: uploads}+ "/public/uploads": {source: service, service: files, source_path: uploads}关系:database: "database:postgresql"

Этогодолжнобытьдостаточнодляработывпродакшене。

此工作,包括代码示例,是根据知识共享协议BY-NC-SA 4.0许可证。