dream_wu2015 2011-12-20 19:36
浏览 39
已采纳

使用PHP获取远程图像并使用GD显示它

I have a code in my website to show remote Gravatar portraits or uploaded images. Uploaded is ok, but i can't get the gravatar images.

Cant use file_get_contents because it´s not allowed on my host.

Heres the start check for the file

if(file_exists($arUser['imagem'][0])){
    $imgPath = $arUser['imagem'][0]; //Usar a imagem enviada
}elseif(!strlen($arUser['imagem'][0]) && checkRemoteFile('http://www.gravatar.com/avatar/'.md5($arUser['email'][0]).'fs=150')){
    $imgPath = 'http://www.gravatar.com/avatar/'.md5($arUser['email'][0]).'fs=150';
}else           
    $imgPath = '../img/social_noavatar_150.jpg'; //Temporario

So this doesn´t work:

$imgData = getimagesize($imgPath);
$src = imagecreatefromwhatever($imgPath);   

I know I should replace:

$imgPath = 'http://www.gravatar.com/avatar/'.md5($arUser['email'][0]).'fs=150';

with something like:

$imgPath = GetFileData('http://www.gravatar.com/avatar/'.md5($arUser['email'][0]).'fs=150');

or

*$imgPath = file_get_contents('http://www.gravatar.com/avatar/'.md5($arUser['email'][0]).'fs=150');*

Got error with both and I can´t create the image:

I´ve searched for the answer but the others didn't fited to me.

Sorry for my bad english. :(

Note:

function imagecreatefromwhatever($image){
$info = pathinfo($image);
$extension = strtolower($info['extension']);
switch($extension) {
    case "jpg":
        return imagecreatefromjpeg($image);
    break;
    case "jpeg":
        return imagecreatefromjpeg($image);
    break;
    case "png":
        return imagecreatefrompng($image);
    break;
    case "gif":
        return imagecreatefromgif($image);
    break;
    default:
        return imagecreatefromjpeg($image);
}
}
  • 写回答

4条回答 默认 最新

  • douan3019 2012-01-03 16:41
    关注

    The easiest way I have found is to transfer the location:

     if(checkRemoteFile('http://www.gravatar.com/avatar/'.md5($arUser['email'][0])))
        header('Location: http://www.gravatar.com/avatar/'.md5($arUser['email'][0]).'fs='.$sizePic);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法