VichUploaderとLiipImagine:アップロードされた画像のサイズを変更して保存します

ジョブソンカルダモン

私はsymfonyプロジェクトに取り組んでおり、vichuploaderとliipImagineを使用しているので、ユーザーが最大10Mbの画像をアップロードできるように、アップロードされた画像のサイズを変更してアップロードディレクトリに保存します(サイズ変更された画像)。次に、100KBのサイズを維持するようにサイズを変更します。

これまで、imagine_filterを使用してアップロードされた画像のサイズを変更することがわかりましたが、この場合、元の画像が保持され、サイズ変更された画像がキャッシュに作成されます。

だから私はこのようなことをしようとしていました:私のコントローラーで

public function edit(Post $post,Request $request)
    {
        $form = $this->createForm(PostType::class, $post);
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            $this->em->flush();
            // And then resize all uploaded images...
            // All i know is to get the filename of each image stored in public/media/posts.
            // In loop because we allow multiple upload 
            // foreach ($post->getPictures() as $picture) {
            //   $picture->getFilename();
            // }
            $this->addFlash('success', 'ELement successfully modified');
            return $this->redirectToRoute('admin.post.index');
        }
        return $this->render('admin/post/edit.html.twig', [
            'post' => $post,
            'form' => $form->createView()
        ]);
    }

私のPostType

class PostType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title')
            ->add('category', EntityType::class, [
                'class' => Category::class,
                'required' => true,
                'choice_label' => 'title'
            ])
            ->add('pictureFiles', FileType::class, [
                'required' => false,
                'multiple' => true
            ])
            ->add('content')
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Post::class,
        ]);
    }
}

助けてくれてありがとう!

ジョブソンカルダモン

提案が見つからなかったので、InterventionImageを使用することにしました。これがベストプラクティスではないことはわかっていますが、必要なものが得られない場合は、自分が持っているものに満足するだけです。そして、私が上で言ったように、目標はサーバー上で最小の画像を維持し、ユーザーが大きな画像をアップロードできるようにすることです。興味があるかもしれない人のために、私はこれを追加しました

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) {
                // this path of the image
                $targetPath = 'media/posts/' .  $picture->getFileName();
                // and then resize it
                $this->resizeImage($targetPath);
            }
            dump($pics);
            $this->addFlash('success', 'ELement successfully modified');
            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);
    }

これを改善する別のアイデアがあれば、私は気を配ります、ありがとう:)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

ReactiveMongoとGridFSを使用して、PlayFrameworkでアップロードされた画像のサイズを変更します

codeigniterphpでサイズ変更された複数の画像をアップロードしようとしています

PHPSDKを使用してAmazonS3にサイズ変更された画像をアップロードする

Codeigniter:サイズ変更300x300の画像をアップロードします(維持率はfalseと記載されています)。ただし、長方形の画像は狭くなります

画像アップロードphpのサイズを変更します

PHPでアップロードしている間、画像のサイズを同じ幅と高さに変更します

Rails6は、アクションテキストとアクティブストレージを使用してアップロードされた画像のサイズを変更します

javascriptを使用して画像をアップロード、サイズ変更し、サーバーに送信します

サイズ変更された画像がダウンロードとして提供されたら、読み込み中のgifを非表示にします

Djangoにアップロードされた画像の元の作成/変更時間を特定/保存します

Web サイトにアップロードされた画像のサイズを変更する理由

アップロードされた画像のサイズ変更が正しく機能しないDjango

Javascriptは、サーバーにアップロードする前に画像のサイズを変更してサイズを縮小しますか?

Expressjsでの画像のアップロードとサイズ変更で問題が発生しました

複数の画像サイズ変更操作をLaravelジョブに委任しても、アップロードプロセスは高速化されません

Wordpressは既存のサイトのすべての画像とアップロードパスを変更します

生の画像バイナリデータ(pngまたはjpeg)としてサーバーにアップロードする前に、画像をトリミングまたはサイズ変更します

画像介入パッケージを使用してIOSデバイスを介してアップロードしたときに画像のサイズを変更し、回転した場合に画像の向きを変更するにはどうすればよいですか?

アップロード時に幅のサイズを変更し、画像を圧縮しますphp mysql

PHPで画像のサイズを変更し、s3にアップロードします

サイズ変更されたフォーム画像をサーバーにアップロードする

「ストライド」配列として保存された画像のサイズ変更:この双一次補間を高速化できますか?

djangoでアップロード中にpilを使用して画像のサイズを変更する

アップロード前にHTML5を使用して画像のサイズを変更する

ユーザーがPHPとImageManipulatorライブラリを使用してプロファイル画像をアップロードするときにプロファイル画像のサイズを変更したい

ASP.NET Core2.0にアップロードした後に画像のサイズを変更する方法

Firebaseにアップロードする前にImagePicker画像のサイズを変更します

アップロードする前に、キャンバスで画像のサイズを変更します

LaravelでstoreAs()を使用して画像をアップロードするときに画像のサイズを変更する

TOP 一覧

  1. 1

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  2. 2

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  3. 3

    Python / SciPyのピーク検出アルゴリズム

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    androidsoongビルドシステムによるネイティブコードカバレッジ

  7. 7

    ZScalerと証明書の問題により、Dockerを使用できません

  8. 8

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    二次導関数を数値計算するときの大きな誤差

  11. 11

    Ansibleで複数行のシェルスクリプトを実行する方法

  12. 12

    画像変更コードを実行してもボタンの画像が変更されない

  13. 13

    Reactでclsxを使用する方法

  14. 14

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  15. 15

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  16. 16

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  20. 20

    好き/愛の関係のためのデータベース設計

  21. 21

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

ホットタグ

アーカイブ