getimagesize()

urlをそのまま入れてもサイズなどを返してくれるので簡単

<?php
$size = getimagesize('http://free-photos-ls01.gatag.net/images/lgf01a201304271400.jpg');

/* $size のoutput
array (
  0 => 1024,
  1 => 768,
  2 => 2,
  3 => 'width="1024" height="768"',
  'bits' => 8,
  'channels' => 3,
  'mime' => 'image/jpeg',
)
*/

file_get_contents()

stream_context_create()で作ったcontextを渡す事で、proxy経由などの設定が可能

<?php
// 例えばproxyを使う
$option = array(
  'http'  =>  array(
    'proxy' =>  tcp://host:port, // ← 設定したいproxy
    'request_fulluri' => true,
  ),
);

$context = stream_context_create($option);

$img_url  = 'http://free-photos-ls01.gatag.net/images/lgf01a201304271400.jpg';
$img_data_string  =  file_get_contents($img_url, false, $context);
$img_data = imagecreatefromstring($img_data_string);
$height = imagesx($img_data);
$width  = imagesy($img_data);

php5.4以降ならgetimagesizefromstringがつかえる

$img_info = getimagesizefromstring($img_data_string);

http function

response code など取得出来るのでエラーハンドリングしやすい

$img_url = 'http://aaabbbccc';
// optionを設定
$option['proxyhost'] = xxx.xxx.x.xxx;
$option['proxyport'] = yyyy;

$http->setOptions($option);
$http->send();
$http_code  = $http->getResponseCode();
$response   = $http->getResponseData();
$body       = $response['body'];

$img_data   = imagecreatefromstring($body);
$height     = imagesx($img_data);
$width      = imagesy($img_data);