2011-09-09 12 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

ところで、あなたは1つの以下の関数を呼び出すことができます。私の意見では、それはイメージ操作の任意の並べ替えのための本当に素敵なバンドルです。 1つのフィルタ(サムネイル作成)だけが付属していますが、独自のバンドルを作成することもできます。ちょうど私があなたと私の発見を共有すると思った:) – gilden

+0

@ gilden、私はそれを見て、感謝! – Czechnology

答えて

6

おそらく出力バッファリングが最適な解決策です。私は[ImagineBundle](https://github.com/avalanche123/AvalancheImagineBundle)を使用することをお勧めし

ob_start(); 
imagepng($img); 
$str = ob_get_clean(); 
関連する問題