]> _ Git - fluidbook-toolbox.git/commitdiff
wip #5772 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 2 Mar 2023 21:30:27 +0000 (22:30 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 2 Mar 2023 21:30:27 +0000 (22:30 +0100)
app/Http/Controllers/Admin/Operations/Tools/ImagesResizer.php [new file with mode: 0644]
app/Http/Controllers/Admin/ToolsController.php
resources/views/tools/sidebar.blade.php

diff --git a/app/Http/Controllers/Admin/Operations/Tools/ImagesResizer.php b/app/Http/Controllers/Admin/Operations/Tools/ImagesResizer.php
new file mode 100644 (file)
index 0000000..d96d29b
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+
+use Cubist\Backpack\Magic\Fields\Percent;
+use Cubist\Backpack\Magic\Fields\StandardFile;
+use Cubist\Backpack\Magic\Form;
+use Cubist\Util\Files\Files;
+use Cubist\Util\Zip;
+use Symfony\Component\HttpFoundation\File\UploadedFile;
+
+// __('!! Outils')
+trait ImagesResizer
+{
+
+    public function resizer()
+    {
+        $form = new Form(backpack_url('tools/doresize'));
+        $form->setEnctype('multipart/form-data');
+        $form->setTitle(__('Redimensionner des images'));
+        $form->setSubmitLabel(__('Redimensionner'));
+        $form->setSubmitIcon('la-compress-arrows-alt');
+        $form->addField('file[]', StandardFile::class, __('Images'), ['multiple' => true, 'accept' => ['.jpg', '.png', '.jpeg', '.svg']]);
+        $form->addField('scale', Percent::class, __('Facteur'), ['max' => 3000, 'default' => 100]);
+
+        return view('tools.form', ['form' => $form]);
+    }
+
+    public function doresize($args = [])
+    {
+        $dir = Files::tmpdir();
+
+        $scale = request()->get('scale', 100);
+        $files = request()->allFiles();
+
+        foreach ($files['file'] as $file) {
+            /** @var $file UploadedFile */
+            $path = $file->getPathname();
+            $local = $dir . "/" . $file->getClientOriginalName();
+            move_uploaded_file($path, $local);
+
+            $ext = mb_strtolower($file->getExtension());
+            if ($ext === 'svg') {
+
+            } else {
+                `convert $local -resize $scale% $local`;
+            }
+        }
+
+
+        $ext = 'zip';
+        $fname = $file->getClientOriginalName();
+        $tmpfile = Files::tempnam() . '.zip';
+        Zip::archive($dir, $tmpfile);
+
+        return response()->download($tmpfile, $fname . '.' . $ext)->deleteFileAfterSend(true);
+    }
+
+}
index eedb33355b494be6684d347671ae245c414f083b..048e4fb1b8669eb8a02e6556660ff9dd94320251 100644 (file)
@@ -11,6 +11,7 @@ use App\Http\Controllers\Admin\Operations\Tools\FluidbookAssetsDownloader;
 use App\Http\Controllers\Admin\Operations\Tools\FluidbookBranchCreate;
 use App\Http\Controllers\Admin\Operations\Tools\FluidbookBranchRemove;
 use App\Http\Controllers\Admin\Operations\Tools\GitReposCreate;
+use App\Http\Controllers\Admin\Operations\Tools\ImagesResizer;
 use App\Http\Controllers\Admin\Operations\Tools\JSON2Excel;
 use App\Http\Controllers\Admin\Operations\Tools\PDF2SVGOperation;
 use App\Http\Controllers\Admin\Operations\Tools\TextToSpeech;
@@ -28,6 +29,7 @@ class ToolsController extends Controller
     use FluidbookBranchCreate;
     use FluidbookBranchRemove;
     use Favicon;
+    use ImagesResizer;
 
     protected function index($tool, $args = '')
     {
index 96b3502660967d5f6ede7c2fa4466b54ceeabac4..c684ca86778db2d2f30f6e8101ace2a1385eca05 100644 (file)
@@ -3,6 +3,8 @@
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/pdf2svg') }}'><i
                 class='nav-icon la la-images'></i>
             <span>{{__('Conversion de PDF en images')}}</span></a></li>
+    <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/resizer') }}'><i class="nav-icon las la-compress-arrows-alt"></i>
+            <span>{{__('Redimensionner des images')}}</span></a></li>
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookassetsdownloader') }}'><i
                 class='nav-icon las la-cloud-download-alt'></i>
             <span>{{__('TĂ©lĂ©chargement massif d\'assets dans un fluidbook')}}</span></a></li>