2017-04-14 74 views
0

我有一个函数从$ url下载图片。 这是一个从JPG,PNG和GIF,但GIF文件的工作失去动画(它成为一个静态图片)从URL获取GIF卷曲:GIF动画

public function getAndPutContent($url, $linkToPut) 
{ 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.111 Safari/537.36 Vivaldi/1.9.804.3'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $data = curl_exec($ch); 
    curl_close($ch); 

    $img = imagecreatefromstring($data); 
    $ext = $this->getImageType($url); 

    if($ext === 'jpg' || $ext === 'jpeg') 
    { 
     imagejpeg($img, $linkToPut); 
    } 
    else if($ext === 'png') 
    { 
     imagepng($img, $linkToPut); 
    } 
    else if($ext === 'gif') 
    { 
     imagegif($img, $linkToPut); 
    } 
} 

getImageType是在这里:

public function getImageType($img) 
{ 
    $result = preg_match('#\.([a-zA-Z]{2,5})$#', $img, $extension); 
    if($result === 0) 
    { 
     $linkExt = 'jpg'; 
    } 
    else 
    { 
     $linkExt = strtolower($extension[1]); 
    } 

    $trueExt = exif_imagetype($img); 
    if($trueExt === IMAGETYPE_JPEG) 
    { 
     $ext = 'jpeg'; 
    } 
    else if($trueExt === IMAGETYPE_PNG) 
    { 
     $ext = 'png'; 
    } 
    else if($trueExt === IMAGETYPE_GIF) 
    { 
     $ext = 'gif'; 
    } 
    else 
    { 
     $ext = $linkExt; 
    } 
    return $ext; 
} 

可以请你帮我守gif动画?

回答

0

我已经解决了我的问题: 我已经改变了:

$img = imagecreatefromstring($data); 
$ext = $this->getImageType($url); 

if($ext === 'jpg' || $ext === 'jpeg') 
{ 
    imagejpeg($img, $linkToPut); 
} 
else if($ext === 'png') 
{ 
    imagepng($img, $linkToPut); 
} 
else if($ext === 'gif') 
{ 
    imagegif($img, $linkToPut); 
} 

到:

file_put_contents($linkToPut, $data);