很久之前就發(fā)現(xiàn)WordPress上傳jianshu或者微信圖片不行,提示webp格式不支持。如今又發(fā)現(xiàn)今日頭條保存下來的圖片出現(xiàn)一樣的問題,雖然表面看是jpg格式,但實際下載為webp格式。一介小民找到了解決方法:
打開 wordpress目錄下的wp-includes/functions.php
搜索'image/gif',在下一行加入 'image/webp' => 'webp', 再次搜索gif,會出現(xiàn)第二第三個gif詞,同理加入webp就行了。這樣你的WordPress就支持微信圖片、今日頭條圖片的上傳到媒體了。
默認(rèn)情況下,WordPress不支持上傳WebP格式的圖片,在主題的functions.php里添加以下代碼即可:
function bzg_filter_mime_types( $array ) { $array['webp'] = 'image/webp'; return $array; }add_filter( 'mime_types', 'bzg_filter_mime_types', 10, 1 );
雖然現(xiàn)在已經(jīng)可以上傳WebP格式的圖片了,但在媒體列表中看不到縮略圖,這是因為WordPress在用wp_generate_attachment_metadata()函數(shù)生成圖片數(shù)據(jù)時,使用了file_is_displayable_image()函數(shù)判斷文件是否為圖片,判斷WebP圖片的結(jié)果為否,因此中斷了保存圖片數(shù)據(jù)的操作。
解決辦法是在主題的functions.php里添加以下代碼:
function bzg_file_is_displayable_image($result, $path) { $info = @getimagesize( $path ); if($info['mime'] == 'image/webp') { $result = true; } return $result;}add_filter( 'file_is_displayable_image', 'bzg_file_is_displayable_image', 10, 2 );
在這之后上傳WebP格式圖片不會再有問題了,但之前已經(jīng)上傳的其他格式的圖片要替換為WebP格式還是比較麻煩,分享一下我的解決過程:
由于我在處理時沒有保存相應(yīng)的腳本和正則表達式,所以你只有自己動手豐衣足食了。
關(guān)于webp
WebP是Google新推出的影像技術(shù),它可讓網(wǎng)頁圖檔有效進行壓縮,同時又不影響圖片格式兼容與實際清晰度,進而讓整體網(wǎng)頁下載速度加快。
由于目前互聯(lián)網(wǎng)上傳輸?shù)臄?shù)據(jù)有65%都是圖片,WebP就是出于減少數(shù)據(jù)量、加速網(wǎng)絡(luò)傳輸?shù)哪康亩_發(fā)的。為了改善JPEG的圖片壓縮技術(shù),他們使用了一種基于VP8編碼(已在2010五月開源)的圖片壓縮器,利用預(yù)測編碼技術(shù),同時還采用了一種基于RIFF的非常輕量級的容器。這種容器只會給每張圖片增加20字節(jié),但能讓圖片作者保存他們想要存儲的元數(shù)據(jù)。
與JPEG相同,WebP是一種有損壓縮利用預(yù)測編碼技術(shù)。但谷歌表示,這種格式的主要優(yōu)勢在于高效率。他們發(fā)現(xiàn),“在質(zhì)量相同的情況下,WebP格式圖像的體積要比JPEG格式圖像小40%。
目前, Google放出了WebP文件解碼器(libvpx)和命令行工具(webpconv),用于JPEG等格式圖片與WebP格式之間的轉(zhuǎn)換,不過系統(tǒng)支持暫時僅限Linux,Windows版本將在稍后推出。
WebP團隊還在開發(fā)WebKit內(nèi)核補丁,用于在Google Chrome瀏覽器中提供對WebP格式的原生支持。
美中不足的是,WebP格式圖像的編碼時間“比JPEG格式圖像長8倍”。