如何使用 PHP 冻结动画 gifs/转换为 jpg?

Posted

技术标签:

【中文标题】如何使用 PHP 冻结动画 gifs/转换为 jpg?【英文标题】:How to freeze animated gifs/convert to jpg with PHP? 【发布时间】:2013-01-03 10:26:45 【问题描述】:

我有一个包含一堆动画 gif 的页面,我想使用 php 在页面加载时冻结它们或将每个 gif 转换为 jpg/png。我遇到了这个http://php.net/manual/en/function.imagecreatefromgif.php,但我对 PHP 不太熟悉。有什么帮助吗?

【问题讨论】:

这个问题的可能重复:***.com/questions/5934094/freezing-gif-images(虽然可能没有多大帮助) 本页下方的第二个示例可能会有所帮助:php.net/manual/en/function.imagecreatefromgif.php 我试过了,但我不断收到此错误“资源解释为图像但使用 MIME 类型文本/html 传输” 你能贴出你制作的代码吗? 请不要将 GIF 转为 JPG。您将获得压缩工件。 JPEG 仅适用于照片。您可以将动画 GIF 转换为非动画 GIF 或 PNG,而不会损失质量。 GIF->JPEG 会丢失质量。 【参考方案1】:

这是将动画 gif 转换为 jpg 的代码。取自 This comment on the PHP manual entry

<?php

//This function gif2jpeg take three parameter as argument. two argument are optional
//first will take the gif file name. second for file name to save the converted file. third argument is an color array

//EXAMPLE:
$gifName = $_GET['gif_name']; //ABSOLUTE PATH OF THE IMAGE (according to its location)
$c['red']=255;
$c['green']=0;
$c['blue']=0;
echo gif2jpeg($gifName, '', $c);


function gif2jpeg($p_fl, $p_new_fl='', $bgcolor=false)
  list($wd, $ht, $tp, $at)=getimagesize($p_fl);
  $img_src=imagecreatefromgif($p_fl);
  $img_dst=imagecreatetruecolor($wd,$ht);
  $clr['red']=255;
  $clr['green']=255;
  $clr['blue']=255;
  if(is_array($bgcolor)) $clr=$bgcolor;
  $kek=imagecolorallocate($img_dst,
                  $clr['red'],$clr['green'],$clr['blue']);
  imagefill($img_dst,0,0,$kek);
  imagecopyresampled($img_dst, $img_src, 0, 0,
                  0, 0, $wd, $ht, $wd, $ht);
  $draw=true;
  if(strlen($p_new_fl)>0)
    if($hnd=fopen($p_new_fl,'w'))
      $draw=false;
      fclose($hnd);
    
  
  if(true==$draw)
    header("Content-type: image/jpeg");
    imagejpeg($img_dst);
  else imagejpeg($img_dst, $p_new_fl);
  imagedestroy($img_dst);
  imagedestroy($img_src);


?>

使用方法:

将上述代码添加到一个php文件'convertGifToJpeg.php' 添加 确保为 gif 图像和 php 文件提供了正确的名称/路径。

【讨论】:

嗨@cusejuice,如果这有帮助,请告诉我。 这个函数是你写的吗?如果没有,请务必注明作者。

以上是关于如何使用 PHP 冻结动画 gifs/转换为 jpg?的主要内容,如果未能解决你的问题,请参考以下文章

切换活动时冻结动画

php 附加全尺寸gifs.php

php如何将json数据写入数据库

从UTF-8到EUC-JP的Groovy中的字符编码转换

加载或倾倒泡菜时如何阻止动画 QCursor 冻结?

如何将冻结图转换为 TensorFlow lite