Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304416
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站网址导航为大家免费提供关于网站编程方面的知识。

php foreach 参数强制类型转换的问题-PhPphp技巧f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

  • 本篇文章的具体介绍如下请大家仔细看
下面通过一个取自CS警匪游戏的GIF动画来说明问题:

GIF动画图片:old.giff79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

为了让问题更加清晰,我们先还原动画各帧:f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

选择一:用PhP中的Imagick模块:
f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

具体相关代码如下如下:
<?php
$image = new Imagick('old.gif');
$i = 0;
foreach ($image as $frame) {
$frame->writeImage('old_' . $i . '.gif');
}
?>

选择二:用ImageMagick提供的convert命令:
具体相关代码如下如下:
shell> convert old.gif old_%d.gif

f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

结果得到GIF动画各帧示意图如下所示:f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

GIF动画各帧示意图f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可以明显的看到,GIF动画为了压缩,会以第一帧为模板,其余各帧按照适当的偏移量依次累加,并只保留不同的像素,结果是导致各帧尺寸不尽相同,为缩略图造成障碍。f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

下面看看如何用PhP中的Imagick模块来完美实现GIF动画缩略图:
f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

具体相关代码如下如下:
<?php
$image = new Imagick('old.gif');
$image = $image->coalesceImages();
foreach ($image as $frame) {
$frame->thumbnailImage(50, 50);
}
$image = $image->optimizeImageLayers();
$image->writeImages('new.gif', true);
?>

f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

具体相关代码如下里最关键的是coalesceimages方法,它确保各帧尺寸一致,用手册里的话来说就是:f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Composites a set of images while respecting any page offsets and disposal methods. GIF, MIFF, and MNG animation sequences typically start with an image background and each subsequent image varies in size and offset. Returns a new Imagick object where each image in the sequence is the same size as the first and composited with the next image in the sequence.f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

同时要特别注意optimizeImageLayers方法,它删除重复像素内容,用手册里的话来说就是:f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Compares each image the GIF disposed forms of the previous image in the sequence. From this it attempts to select the smallest cropped image to replace each frame, while preserving the results of the animation.f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

BTW:如果要求更完美一点,可以使用quantizeImages方法进一步压缩。f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

特别注意:不管是coalesceimages,还是optimizeImageLayers,都是返回新的Imagick对象!f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

如果你更习惯操作shell的话,那么可以这样实现GIF动画缩略图:
f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

具体相关代码如下如下:
shell> convert old.gif -coalesce -thumbnail 50x50 -layers optimize new.gif

f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

生成的new.gif如下:f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

new.giff79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

有个细节问题:convert版本会比php版本小一些,这是API实现不一致所致。f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

另外,如果缩略图尺寸不符合原图比例,为了避免变形,还要考虑裁剪或者是补白,由于本文主要讨论GIF动画缩略图的特殊性,就不再继续讨论这些问题了,有兴趣的自己搞定吧。f79AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

关于网站编程方面的知识就说道这里了,希望能够对大家有作用。,

标签:

分享到:

  admin

注册时间:

网站:0 个   APP:3 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304416

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市