php httpで取得した画像をgdで扱える様にする。

ちょっとつまづいたのでメモ。getimagesizeとかget_file_contentsとか便利な関数はあるけど引数はpath(url)しか受け付けないので、ログイン認証しないとアクセスできない画像とかはこいつが使えない。そこでHTTP_Clintで認証->httpで画像取得->GDで扱えるようにresource型に変換する方法。

    $client =& new HTTP_Client();
    $client->post($login_url, $params);
    $client->get($image_url);
    $response = $client->currentResponse();

    $image = array();
    $file = imagecreatefromstring($response['body']);

こんな感じ。httpでgetするとresponseのbodyが画像のバイナリになるのでそいつをimagecreatefromstringでresource型に変更するとok。

なんかもっとスマートな方法ありそうだなぁ。