PHPのGDイメージストリームを文字列に変換する

前回画像を加工するまでは完了しましたが、このままではTwitterAPIにリクエスト出来ませんので、イメージストリームを文字列に変換するか、あるいは一旦ファイルに出力してしまう必要があります。当初は一旦ファイル化していましたが、サーバー容量の無駄遣いになってしまうので、文字列に変換する方法に切り替えました。

//$effected_image:GD画像ストリーム
//$ei に文字列化されて取得
ob_start();
imagepng($effected_image);
$ei = ob_get_contents();
ob_end_clean();

バッファリングを有効にし、一旦imagepngなどで画像を出力した後に変数に格納すると、文字列として取得できます。ob_startからob_end_cleanまでの間、通常ブラウザに出力される内容はバッファリングされるので、任意のタイミングでob_get_contentsを実行すると、出力内容を変数に取れるということです。

文字列になると、BASE64エンコードしてHTTP送信したり出来るようになるので、TwitterAPIでの利用に限らず、サーバー間の画像のやり取り等にもかなり応用出来ると思います。

ちなみに、ファイルに保存したい場合は、上記のバッファリングなどせず、適当なディレクトリパスを指定してimagepngすれば良いです。

コメント

タイトルとURLをコピーしました