2011-09-09 12 views
9

Symfony2'de görüntü yeniden boyutlandırma için bir komut dosyası yapıyorum. Görüntüyü string'e dönüştür (Symfony2 Response için)

Ben standart Symfony2 tepki sistemini kullanabilmek için istiyorum gibi

...

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

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

... Bir tepki olarak göndermek için bir dize gerekir. Ne yazık ki, imagepng gibi işlevler sadece dosyaları yazabilir veya doğrudan tarayıcıya gönderir, dizeleri döndürmez.

Bugüne kadar sadece çözümler ben

1] geçici bir konuma görüntüyü kaydetmek vardır düşünmek ve sonra

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

2] kullanmak çıkış tamponlama

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

return new Response($str, 200, $headers); 
tekrar okumak başardı

Daha iyi bir yolu var mı?

+2

:

BTW bir eksik işlevini çağırabilirsiniz. Bence her türlü görüntü manipülasyonu için gerçekten güzel bir paket. Sadece tek bir filtre (küçük resim oluşturma) ile birlikte gelse de, kendi paketlerinizi yazabilirsiniz. Sadece seninle olanı paylaşacağımı düşündüm :) – gilden

+0

@gilden, Şuna bir bakacağım, teşekkürler! – Czechnology

cevap

6

Çıktı tamponlaması muhtemelen en iyi çözümdür. Ben [ImagineBundle] (https://github.com/avalanche123/AvalancheImagineBundle) kullanılmasını öneriyoruz

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