天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

完美實(shí)現(xiàn)GIF動(dòng)畫(huà)縮略圖的php代碼

下面通過(guò)一個(gè)取自CS警匪游戲的GIF動(dòng)畫(huà)來(lái)說(shuō)明問(wèn)題: GIF動(dòng)畫(huà)圖片:old.gif

GIF動(dòng)畫(huà)圖片:old.gif

為了讓問(wèn)題更加清晰,我們先還原動(dòng)畫(huà)各幀:

選擇一:用php中的Imagick模塊:
復(fù)制代碼 代碼如下:
<?php
$image = new Imagick('old.gif');
$i = 0;
foreach ($image as $frame) {
$frame->writeImage('old_' . $i++ . '.gif');
}
?>

選擇二:用ImageMagick提供的convert命令:
復(fù)制代碼 代碼如下:
shell> convert old.gif old_%d.gif

結(jié)果得到GIF動(dòng)畫(huà)各幀示意圖如下所示:

GIF動(dòng)畫(huà)各幀示意圖

GIF動(dòng)畫(huà)各幀示意圖

可以明顯的看到,GIF動(dòng)畫(huà)為了壓縮,會(huì)以第一幀為模板,其余各幀按照適當(dāng)?shù)钠屏恳来卫奂樱⒅槐A舨煌南袼兀Y(jié)果是導(dǎo)致各幀尺寸不盡相同,為縮略圖造成障礙。

下面看看如何用php中的Imagick模塊來(lái)完美實(shí)現(xiàn)GIF動(dòng)畫(huà)縮略圖:
復(fù)制代碼 代碼如下:
<?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);
?>

代碼里最關(guān)鍵的是coalesceimages方法,它確保各幀尺寸一致,用手冊(cè)里的話來(lái)說(shuō)就是:

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.

同時(shí)要注意optimizeImageLayers方法,它刪除重復(fù)像素內(nèi)容,用手冊(cè)里的話來(lái)說(shuō)就是:

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.

BTW:如果要求更完美一點(diǎn),可以使用quantizeImages方法進(jìn)一步壓縮。

注意:不管是coalesceimages,還是optimizeImageLayers,都是返回新的Imagick對(duì)象!

如果你更習(xí)慣操作shell的話,那么可以這樣實(shí)現(xiàn)GIF動(dòng)畫(huà)縮略圖:
復(fù)制代碼 代碼如下:
shell> convert old.gif -coalesce -thumbnail 50x50 -layers optimize new.gif

生成的new.gif如下:

 

new.gif

new.gif

有個(gè)細(xì)節(jié)問(wèn)題:convert版本會(huì)比php版本小一些,這是API實(shí)現(xiàn)不一致所致。

另外,如果縮略圖尺寸不符合原圖比例,為了避免變形,還要考慮裁剪或者是補(bǔ)白,由于本文主要討論GIF動(dòng)畫(huà)縮略圖的特殊性,就不再繼續(xù)討論這些問(wèn)題了,有興趣的自己搞定吧。

php技術(shù)完美實(shí)現(xiàn)GIF動(dòng)畫(huà)縮略圖的php代碼,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲精品一区三区三区在线观看 | 免费啪视频观试看视频 | 亚洲日韩视频免费观看 | 十大禁止安装的黄台有风险 | 国产人妻人伦精品9 | 中文字幕在线观看国产 | 肉动漫h黄动漫日本免费观看 | 欧美性情video sexo视频 | 国产精品久久久久久久久无码 | 二级毛片免费观看全程 | 成人在线免费视频观看 | 在线中文字幕视频 | 日本妈妈xxxx | 日本午夜精品理论片A级APP发布 | 息与子在线交尾中文字幕 | 成人亚洲视频在线观看 | 99在线观看视频 | 久久婷五月综合色啪首页 | 语文老师扒开胸罩喂我奶 | 国产亚洲精品视频在线网 | 久久国产影院 | 91系列在线观看免费 | 超碰98人人插| 黄色天堂网 | 国产在线高清视频无码不卡 | 快播电影频道 | 忘忧草在线社区WWW日本直播 | 日本无码色哟哟婷婷最新网站 | 欧美性类s0x | 国模精品一区二区三区视频 | adc我们的永久网址 adc网址在线观看 | 亚洲一区日韩一区欧美一区a | 精品午夜寂寞影院在线观看 | 果冻传媒最新视频在线观看 | 校园高h肉耽文 | 欧美性极品黑人hd | 久久青青草原综合伊人 | 精品欧美18videosex欧美 | 肉色欧美久久久久久久蜜桃 | 善良的小峓子2在钱免费中文字 | 黄 色 网 站 免 费 涩涩屋 |