2011-09-09 18 views
9

Estoy construyendo un script para cambiar el tamaño de la imagen en Symfony2.Convertir imagen a cadena (para respuesta Symfony2)

Como me gustaría ser capaz de utilizar el sistema de respuesta estándar de Symfony2 ...

$headers = array('Content-Type'  => 'image/png', 
       'Content-Disposition' => 'inline; filename="image.png"'); 

return new Response($img, 200, $headers); // $img comes from imagecreatetruecolor() 

... necesito una cadena para enviar como respuesta. Desafortunadamente, las funciones como imagepng solo escriben archivos o salen directamente al navegador, no devuelven cadenas.

Hasta ahora, las únicas soluciones que era capaz de pensar son

1] guardar la imagen en una ubicación temporal y luego leerlo de nuevo

imagepng($img, $path); 
return new Response(file_get_contents($path), 200, $headers); 

2] usar búferes de salida

ob_start(); 
imagepng($img); 
$str = ob_get_contents(); 
ob_end_clean(); 

return new Response($str, 200, $headers); 

¿Hay una manera mejor?

+2

recomiendo el uso de [ImagineBundle] (https://github.com/avalanche123/AvalancheImagineBundle). En mi opinión, es un paquete realmente bueno para cualquier tipo de manipulación de imágenes. Aunque viene con un solo filtro (creación de miniaturas), puede escribir sus propios paquetes. Solo pensé en compartir mi hallazgo :) – gilden

+0

@gilden, voy a echarle un vistazo, ¡gracias! – Czechnology

Respuesta

6

El buffer de salida es probablemente la mejor solución.

BTW puede llamar a una función menos:

ob_start(); 
imagepng($img); 
$str = ob_get_clean();