如何返回绝对URL

时间:2010-12-30 20:57:55

标签: php

我一直在尝试使用GET周边作为源网址在php生成的图像中插入图像(使用imagecreatefromX(),其中x = gif,jpeg或png)。我尝试通过这样做来检查它是什么MIME类型:

$pic = $_GET['pic'];

switch(returnMIMEType($pic)) {

    case "image/gif":
        $profileImage = @imagecreatefromgif($pic) or die('Unable to load gif image.');
        break;

    case "image/jpg":
        $profileImage = @imagecreatefromjpeg($pic) or die('Unable to load jpeg image.');
        break;

    case "image/png":
        $profileImage = @imagecreatefrompng($pic) or die('Unable to load png image.');
        break;

    default:
        $pic = 'http://www.example.com/image.gif';
        $profileImage = @imagecreatefromgif($pic) or die('Unable to load gif image.');
        break;   
}

$profileImageWidth = imagesx($profileImage);
$profileImageHeight = imagesy($profileImage);

imagecopyresized($image, $profileImage, 0, 0, 0, 0, 25, 25, $profileImageWidth, $profileImageHeight);

returnMIMEType()只是我提出的一个返回MIME类型的简单函数。

当以这种格式给出网址时:“http://graph.facebook.com/123456789/picture”,它应该返回Facebook上用户个人资料图片的jpg图片,但我假设,这就是我遇到的问题,是PHP正在查看确切的URL而不是网址“http://graph.facebook.com/123456789/picture”重定向。我怎么能拥有它以便它能够理解等到重定向?

感谢您对此事的考虑!

以下是错误:

Warning: mime_content_type() [function.mime-content-type]: File or path not found
'http://graph.facebook.com/123456789/picture'

1 个答案:

答案 0 :(得分:2)

重定向不应成为问题。有可能,您将ini设置allow_url_fopen设置为false,因此不允许您打开包含文件功能的URL,并且由于您使用@而错误被禁止。尝试仔细检查您是否已启用allow_url_fopen,如果这不起作用,请尝试删除@以获取更有意义的错误消息。

我尝试使用http://graph.facebook.com/123456789/picture网址和`imagecreatefromgif(),它对我来说效果很好。

编辑:文件信息功能不喜欢网址。请尝试以下mime类型:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_buffer($finfo, file_get_contents($url));