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

完美實現GIF動畫縮略圖的php代碼

下面通過一個取自CS警匪游戲的GIF動畫來說明問題: GIF動畫圖片:old.gif

GIF動畫圖片:old.gif

為了讓問題更加清晰,我們先還原動畫各幀:

選擇一:用php中的Imagick模塊:
復制代碼 代碼如下:
<?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

結果得到GIF動畫各幀示意圖如下所示:

GIF動畫各幀示意圖

GIF動畫各幀示意圖

可以明顯的看到,GIF動畫為了壓縮,會以第一幀為模板,其余各幀按照適當的偏移量依次累加,并只保留不同的像素,結果是導致各幀尺寸不盡相同,為縮略圖造成障礙。

下面看看如何用php中的Imagick模塊來完美實現GIF動畫縮略圖:
復制代碼 代碼如下:
<?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);
?>

代碼里最關鍵的是coalesceimages方法,它確保各幀尺寸一致,用手冊里的話來說就是:

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.

同時要注意optimizeImageLayers方法,它刪除重復像素內容,用手冊里的話來說就是:

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:如果要求更完美一點,可以使用quantizeImages方法進一步壓縮。

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

如果你更習慣操作shell的話,那么可以這樣實現GIF動畫縮略圖:
復制代碼 代碼如下:
shell> convert old.gif -coalesce -thumbnail 50x50 -layers optimize new.gif

生成的new.gif如下:

 

new.gif

new.gif

有個細節問題:convert版本會比php版本小一些,這是API實現不一致所致。

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

php技術完美實現GIF動畫縮略圖的php代碼,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: qovd电影| 久久人妻少妇嫩草AV蜜桃99 | 亚洲免费在线视频观看 | 亚洲精品沙发午睡系列 | 无码天堂亚洲国产AV久久 | 囯产免费精品一品二区三区视频 | 新影音先锋男人色资源网 | 亚洲AV國產国产久青草 | 肉动漫3D卡通无修在线播放 | 亚洲AV久久无码精品热九九 | 婷婷五月久久精品国产亚洲 | 在线视频 国产 日韩 欧美 | 高跟丝袜岳第一次 | 亚洲国产欧美日韩在线一区 | 国产精品外围在线观看 | 国产小视频免费在线观看 | 色戒在线完整观看在线播放版 | 国产高清美女一级a毛片久久w | 欧美自拍亚洲综合图区 | 亚洲成片在线看 | 文中字幕一区二区三区视频播放 | 免费精品美女久久久久久久久久 | 美女白虎穴| 日韩一区二区三区免费体验 | 少妇高潮惨叫久久久久久欧美 | 精品日韩欧美一区二区三区 | 99久久香蕉| 国产在线公开视频 | 国产亚洲精品久久综合阿香 | 色综合久久88一加勒比 | 亚洲免费无码av线观看 | 4438全国免费观看 | 白丝高中生被c爽哭 | 亚洲精品天堂在线观看 | 亚洲免费黄色 | 羲义嫁密着中出交尾gvg794 | 欲奴第一季在线观看全集 | 国产午夜伦伦伦午夜伦 | 国产真实强被迫伦姧女在线观看 | 亚洲幼女网 | 欧美阿v在线免播播放 |