Use o LiipImagineBundle para redimensionar a imagem após o upload?

Estou usando oLiipImagineBundle com o Symfony 2.1 e gostaria de redimensionar as imagens enviadas pelo usuário após o upload antes de salvá-las no local permanente do sistema de arquivos (para remover metadados, impor o formato jpeg e limitar o tamanho do arquivo). Eu tenho que chamar um filtro 'strip' e 'resize' do controlador e depois salvar a imagem filtrada de um local temporário em uma pasta de minha escolha no sistema de arquivos.

Eu tentei usar oLiipImageBundle Controller como um serviço conforme indicado no readme do pacote mas a ação chamada é principalmente para criar uma imagem filtrada no diretório de cache quando uma solicitação é feita para exibir a imagem (usá-lo para filtrar durante o upload é outro caso). Eu tentei implementá-lo como segue de qualquer maneira, e consegui que funcionasse. Eu tive que primeiro mover o arquivo do diretório temporário php do servidor web para um diretório na pasta web para poder aplicar o filtro. Em segundo lugar, apliquei o filtro e deletei (unlink ()) o arquivo inicial não filtrado. Por fim, tive que mover (renomear) o arquivo filtrado para o local permanente no sistema de arquivos. Foi necessário mover o arquivo duas vezes, aplicar o filtro uma vez e excluir (desvincular) um arquivo para que tudo funcione. Existe uma maneira melhor (não exigir o movimento intermediário) para usar o pacote no upload?

class MyController extends Controller
{
    public function new_imageAction(Request $request)
    {
        $uploadedFile = $request->files->get('file');
        $tmpFolderPathAbs = $this->get('kernel')->getRootDir() . '/../web/uploads/tmp/';
        $tmpImageNameNoExt = rand();
        $tmpImageName = $tmpImageNameNoExt . '.' . $fileExtension;
        $uploadedFile->move($tmpFolderPathAbs, $tmpImageName);
        $tmpImagePathRel = '/uploads/tmp/' . $tmpImageName;
        // Create the filtered image in a tmp folder:
        $this->container->get('liip_imagine.controller')->filterAction($request, $tmpImagePathRel, 'my_filter');
        unlink($tmpFolderPathAbs . $tmpImageName);
        $filteredImagePathAbs = $this->get('kernel')->getRootDir() . '/../web/uploads/cache/my_filter/uploads/tmp/' . $tmpImageNameNoExt . '.jpeg';
        $imagePath = $imageManagerResponse->headers->get('location');
        // define permanent location ($permanentImagePathAbs)...
        rename($filteredImagePathAbs, $permanentImagePathAbs);
    }
}

Meu filtro no app / config / config.yml é o seguinte:

liip_imagine:
    filter_sets:
        my_filter:
            format: jpeg
            filters:
                strip: ~
                thumbnail: { size: [1600, 1000], mode: inset }

Uma pergunta semelhante foi feita para o ImagineAvalancheBundle mas não há muitos detalhes. Talvez implementandooutro serviço da lista fornecida aqui é uma solução melhor?

questionAnswers(5)

yourAnswerToTheQuestion