¿Usar LiipImagineBundle para cambiar el tamaño de la imagen después de subirla?

Estoy usando elLiipImagineBundle con Symfony 2.1 y le gustaría cambiar el tamaño de las imágenes cargadas por el usuario al cargarlas antes de guardarlas en la ubicación permanente del sistema de archivos (para eliminar metadatos, imponer el formato jpeg y limitar el tamaño del archivo). Tengo que llamar a un filtro de 'tira' y 'cambio de tamaño' desde el controlador y luego guardar la imagen filtrada desde una ubicación temporal en una carpeta de mi elección en el sistema de archivos.

Traté de usar elLiipImageBundle Controller como servicio, como se indica en el archivo Léame del paquete. pero la Acción llamada es principalmente para crear una imagen filtrada en el directorio del caché cuando se realiza una solicitud para mostrar la imagen (usarla para filtrar durante la carga es otro caso). Intenté implementarlo de la siguiente manera y lo hice funcionar. Primero tuve que mover el archivo del directorio temporal de php del servidor web a un directorio en la carpeta web para poder aplicar el filtro. En segundo lugar, apliqué el filtro y eliminé (unlink ()) el archivo sin filtrar inicial. Por último, tuve que mover (renombrar ()) el archivo filtrado a la ubicación permanente en el sistema de archivos. Fue necesario mover el archivo dos veces, aplicar el filtro una vez y eliminar (desvincular) 1 archivo para que todo funcione. ¿Hay una forma mejor (que no requiera el movimiento intermedio) de usar el paquete en la carga?

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);
    }
}

Mi filtro en la aplicación / config / config.yml es el siguiente:

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

Una pregunta similar se hizo para el ImagineAvalancheBundle Pero no se dan muchos detalles. Tal vez implementandootro servicio de la lista provista aquí ¿Es una mejor solución?

Respuestas a la pregunta(5)

Su respuesta a la pregunta