我一直在尝试使用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'
答案 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));