【问题标题】:Getting gif from url by curl: gif loose animation通过 curl 从 url 获取 gif:gif 松散动画
【发布时间】:2017-09-11 05:03:39
【问题描述】:

我有一个从 $url 下载图像的功能。 它适用于 jpg、png 和 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 动画吗?

【问题讨论】:

    标签: php url animation curl gif


    【解决方案1】:

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

    $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);
    

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多