2011-09-09 32 views
9

我正在爲Symfony2中的圖像大小調整構建腳本。將圖像轉換爲字符串(用於Symfony2響應)

正如我希望能夠使用標準的Symfony2響應系統...

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

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

...我需要一個字符串發送作爲響應。不幸的是,像imagepng這樣的函數只能寫入文件或直接輸出到瀏覽器,而不是返回字符串。

到目前爲止,唯一的解決辦法我能想到的是

1]將圖像保存到一個臨時位置,然後又看了一遍

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

2]使用輸出緩衝

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

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

有沒有更好的方法?

+2

我建議使用[ImagineBundle(https://github.com/avalanche123/AvalancheImagineBundle)。在我看來,這對任何形式的圖像處理來說都是一個非常好的包。雖然它只有一個過濾器(創建縮略圖),但您可以編寫自己的軟件包。只是以爲我會分享我的發現:) – gilden

+0

@gilden,我會看看它,謝謝! – Czechnology

回答

6

輸出緩衝可能是最好的解決方案。

順便說一句,你可以調用一個功能較少:

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