Michael Donohoe

The technical, trivial and interesting things I find

November 8, 2009 at 6:01pm
Home

Width & Height info for remotely hosted JPGs

Get width and height information on a remote JPG image, without downloading it in full.

I have set the range to “0-10240” as I deal with larger images of about 800K. If you know your target file size will be typically lower you can adjust this.

function remoteImage($url){
    $ch = curl_init ($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    curl_setopt($ch, CURLOPT_RANGE, "0-10240");

    $fn = "partial.jpg";
    $raw = curl_exec($ch);
    $result = array();
    $result["exists"] = false;

    if(file_exists($fn)){
        unlink($fn);
    }

    if ($raw !== false) {

        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        if ($status == 200 || $status == 206) {

                $result["exists"] = true;
		$result["w"] = 0;
		$result["h"] = 0;

		$fp = fopen($fn, 'x');
		fwrite($fp, $raw);
		fclose($fp);

		$size = getImageSize($fn);

		if ($size===false) {
		//	Cannot get file size information
		} else {
		//	Return width and height
			list($result["w"], $result["h"]) = $size;
		}

        }
    }

    curl_close ($ch);
    return $result;
}

Notes

  1. donohoe posted this