Получение gif из URL с помощью curl: gif свободная анимация

У меня есть функция, которая загружает изображение из $ 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?

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector