2017-04-14 5 views
0

$ urlから画像をダウンロードする機能があります。 それはJPG、PNG、およびGIFからの作業ですが、GIFファイルのアニメーション(それは静的な絵になる)URLからgifを取得するにはcurl:gif loose animation

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); 
関連する問題