2017-07-19 44 views
0

我正在開發一個項目,用戶可以在其中上傳webp圖片。我知道如何將webp圖片轉換爲jpg/png。但我堅持認爲,如何確定是否webp圖像是靜態的(非動畫)或動畫。 我想確定,因爲轉換我使用這樣的命令:如何識別webp圖像是靜態還是動畫?

命令非動畫WEBP到jpg-

dwebp nonanimated.webp -o jpg.jpg

命令動畫WEBP非動畫WEBP(需要2幀) -

webpmux -get frame 2 animated.webp -o nonanimated.webp

,但我沒有找到一個單一的命令,即處理這兩種情況。所以我想識別webp圖像。

我在服務器端使用PHP,前端使用的是HTMLJavascript

+0

據我所知它只有GIF可以動畫 – Andreas

+0

如果^^是正確的,你可以使用這段代碼從PHP手冊https://secure.php.net/manual/en/function.imagecreatefromgif.php#59787 – Andreas

+0

這段代碼只檢查'gif'而不檢查'webp'。 'Webp'也可以動畫,請使用Chrome瀏覽器檢查這個http://cloudinary.com/blog/animated_webp_how_to_convert_animated_gif_to_webp_and_save_up_to_90_bandwidth –

回答

1

經過大量的調查後,我發現動畫webp圖像始終conatins一些字符串,當在文本編輯器中打開和非動畫圖像不打開。字符串是ANMFANIM。我在所有的webp圖像中檢查了這些字符串。所以這對我來說是完美的。以下是PHPJavascriptShell Script一些解決方案:

在PHP:

<?php 
function isWebpAnimated($src){ 
    $webpContents = file_get_contents($src); 
    $where = strpos($webpContents, "ANMF"); 
    if ($where !== FALSE){ 
     // animated 
     $isAnimated = true; 
    } 
    else{ 
     // non animated 
     $isAnimated = false; 
    } 
    return $isAnimated; 
} 
?> 

在Javascript中:

function isAnimatedGif(src) { 
    var request = new XMLHttpRequest(); 
    request.open('GET', src, true); 
    request.addEventListener('load', function() { 
     if(request.response.indexOf("ANMF") != -1){ 
      // animated 
      alert(true); 
     } 
     else{ 
      // non animated 
      alert(false); 
     } 
    }); 
    request.send(); 
} 

但是在大型圖像PHPJavascript的情況都不盡如人意,所以最好解決方法是使用Shell Script,如果你有Ubuntu

在Shell腳本:

echo $(grep -c "ANMF" ~/animated.webp) 

則返回0無動畫,否則不爲零的動畫。

相關問題