elhor maneira de determinar se um URL é uma imagem em PHP

sando o PHP, dado um URL, como posso determinar se é uma image

Não há contexto para o URL - ele está no meio de um arquivo de texto sem formatação ou talvez apenas uma string por conta própri

Eu não quero uma sobrecarga alta (por exemplo, ler o conteúdo do URL), pois isso pode ser chamado para muitos URLs em uma página. Dada essa restrição, não é essencial que todas as imagens sejam identificadas, mas eu gostaria de ter um palpite bastante bom.

No momento, estou apenas olhando para a extensão do arquivo, mas parece que deve haver uma maneira melhor do que iss

Aqui está o que eu tenho atualmente:

  function isImage( $url )
  {
    $pos = strrpos( $url, ".");
    if ($pos === false)
      return false;
    $ext = strtolower(trim(substr( $url, $pos)));
    $imgExts = array(".gif", ".jpg", ".jpeg", ".png", ".tiff", ".tif"); // this is far from complete but that's always going to be the case...
    if ( in_array($ext, $imgExts) )
      return true;
    return false;
  }

Editar Caso seja útil a mais alguém aqui, é a função final usando a técnica da resposta de Emil H:

  function isImage($url)
  {
     $params = array('http' => array(
                  'method' => 'HEAD'
               ));
     $ctx = stream_context_create($params);
     $fp = @fopen($url, 'rb', false, $ctx);
     if (!$fp) 
        return false;  // Problem with url

    $meta = stream_get_meta_data($fp);
    if ($meta === false)
    {
        fclose($fp);
        return false;  // Problem reading data from url
    }

    $wrapper_data = $meta["wrapper_data"];
    if(is_array($wrapper_data)){
      foreach(array_keys($wrapper_data) as $hh){
          if (substr($wrapper_data[$hh], 0, 19) == "Content-Type: image") // strlen("Content-Type: image") == 19 
          {
            fclose($fp);
            return true;
          }
      }
    }

    fclose($fp);
    return false;
  }

questionAnswers(8)

yourAnswerToTheQuestion