文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP合成生成GIF动图

2023-10-06 09:43

关注

目录

环境需要:

PHP Imagick 示例:

php针对项目目录下图片集处理:

php处理 base64格式 图片集处理:


说明:主要是针对纯前端生成GIF图片质量问题做的调研;
目标:前端把CANVAS处理的每帧图片转成base64图片传至后台,后台生成最终GIF图片返回给前台展示;

环境需要:

PHP所需扩展:imagick扩展
phpstudy安装imagick扩展
https://blog.csdn.net/qq_16494241/article/details/126845475
2、在php.ini 中加入 extension=php_imagick.dll

PHP Imagick 示例:

https://phpimagick.com/

实现:

透明GIF图帧重叠问题处理:
$image->readImage 后加
$image->setImageDispose(3); // 在此帧覆盖之前清除图像

php针对项目目录下图片集处理:

步骤:
读取本地图片集 -> 配置相关参数,合成GIF图 -> 存储本地gif-file目录中 -> 转成base64图片使用 -> 删除最终生成并保存在本地的图片

代码示例:

setFormat($type);  foreach ( $filelist as $file ){    $image = new Imagick();    $image->readImage( $file ); //合并图片    $image->setImageDispose(3); // 在此帧覆盖之前清除图像    $animation->addImage( $image ); //加入到刚才建立的对象    $animation->setImageDelay( $num ); //为每一帧单独设置延迟。修改动画Gif,使其帧以可变速度播放,从显示 50 毫秒到 0 毫秒不等,这将导致在大多数浏览器中跳过帧。    unset( $image ); //消除内存里的图像资源  }  //调试是否生成gif图片  //header( "Content-Type: image/gif" );  //echo( $animation->getImagesBlob() );  //新图片文件名组合  $images = $prefix . time() . rndStr() . '.' . $type;  // echo $images;  //生成图片并保存至gif-file目录中  $animation->writeImages( 'gif-file/' . $images, true );  // $animation->writeImages( $images, true );  //复制图片到指定位置  // copy($images, 'gif-file/' . $images);    // 生成后的图片转base64图片使用  $pic = 'gif-file/' . $images;  $pic = "data:image/" . $type . ";base64," . base64_encode(file_get_contents($pic));  echo $pic;  echo '';    //删除最终生成并保存的图片  unlink('gif-file/' . $images);  // echo '';}?>

php处理 base64格式 图片集处理:

步骤:
读取 base64格式 图片集 -> 存储每张base64图片至本地 -> 配置相关参数,合成GIF图,删除之前存储在本地的单张base64图片 -> 存储本地gif-file目录中 -> 转成base64图片使用 -> 删除最终生成并保存在本地的图片

代码示例:

setFormat($type);  foreach ( $filelist as $file ){    $image = new Imagick();        // 存储base64图片    $name = time() . rndStr();    if(stripos($file,'base64,')){      $fileArr = explode('base64,',$file);      $img = str_replace(' ', '+', $fileArr[1]);    }else{      $img = str_replace(' ', '+', $file);    }    $img = base64_decode($img);    //存储图片,注意文件夹是否有写入权限    $dir = iconv("UTF-8", "GBK", "upfile");    if (!file_exists($dir)){      mkdir ($dir,0777,true);    }    $f = fopen('upfile/' . $name . '.jpg', 'w+');    fwrite($f, $img);    fclose($f);    $image->readImage( 'upfile/' . $name . '.jpg' ); //合并图片    // $image->readImage( $file ); //合并图片    $image->setImageDispose(3); // 在此帧覆盖之前清除图像    $animation->addImage( $image ); //加入到刚才建立的对象    $animation->setImageDelay( $num ); //为每一帧单独设置延迟。修改动画Gif,使其帧以可变速度播放,从显示 50 毫秒到 0 毫秒不等,这将导致在大多数浏览器中跳过帧。    unset( $image ); //消除内存里的图像资源        // 删除之前存储的base64图片    unlink('upfile/' . $name . '.jpg');  }  //调试是否生成gif图片  //header( "Content-Type: image/gif" );  //echo( $animation->getImagesBlob() );  //新图片文件名组合  $images = $prefix . time() . rndStr() . '.' . $type;  // echo $images;  //生成图片并保存至gif-file目录中  $animation->writeImages( 'gif-file/' . $images, true );  // $animation->writeImages( $images, true );  //复制图片到指定位置  // copy($images, 'gif-file/' . $images);    // 生成后的图片转base64图片使用  $pic = 'gif-file/' . $images;  $pic = "data:image/" . $type . ";base64," . base64_encode(file_get_contents($pic));  echo $pic;  echo '';    //删除最终生成并保存的图片  unlink('gif-file/' . $images);  // echo '';}?>

php处理 base64格式 图片集处理的,最终展示,代码中多个 / 被处理了,如:

来源地址:https://blog.csdn.net/qq_16494241/article/details/127245975

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯