J'ai un peu fouillé et j'ai finalement opté pour InterventionImage qui me permet de redimensionner et reécrire une image, certes les uns me diront c'est un bundle de trop, mais vu que je n'ai pas trouvé de solution jusque là, pas de choix.
Pourquoi ceci, juste pour permettre à l'utilisateur d'uploader une image de 8Mb (5472 3648) qu'on ne va pas se permettre de grader sur le site et rester avec un 768 486 de 150Kb.
Pour ceux-là qui seraient intéressés, dans mon Controller après avoir uploadé l'image, je redimensionne toutes les images uploadée
public function edit(Post $post,Request $request)
{
$form = $this->createForm(PostType::class, $post);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->em->flush();
$pics = [];
foreach ($post->getPictures() as $picture) {
$targetPath = 'media/posts/' . $picture->getFileName();
$pics[] = $targetPath;
$this->resizeImage($targetPath);
}
dump($pics);
$this->addFlash('success', 'Elément bien modifié avec succès');
return $this->redirectToRoute('admin.post.index');
}
return $this->render('admin/post/edit.html.twig', [
'post' => $post,
'form' => $form->createView()
]);
}
private function resizeImage($targetPath)
{
$manager = new ImageManager(['driver' => 'gd']);
$manager->make($targetPath)->widen(768, function ($constraint) {
$constraint->upsize();
})->save($targetPath);
}
Et si quelqu'un peut améliorer l'idée ou propser, je serai toujours attentif, Merci :)