1. 程式人生 > >三種圖片壓縮方案效率比較

三種圖片壓縮方案效率比較

目前找到三種圖片壓縮方案

  • thumbnailator-0.4.8

    100%java實現,無其餘依賴。但版本太老,最新版本0.4.8於2014年釋出

  • imageMagick-6.9.3

    linux上的一個圖片處理軟體的命令列工具,功能強大

  • ffmpeg-3.4.2-2+b1

    開源的音視訊處理方案,可以處理圖片

此次使用java來編碼,除thumbnailator外使用exec命令列方式呼叫

本次所有處理方案均為75%壓縮比率,去除額外資訊(ffmpeg除外),解析度大小不做處理,執行次數10次

所涉及命令概覽

  • imageMagick

    convert -strip -quality 75% in.jpg out.jpg

  • ffmpeg

    ffmpeg -hide_banner -i in.jpg out.jpg

處理7.7MB,解析度4570x1984的jpg圖片

方案 大小 最短(毫秒) 最久 平均
thumber 723.6KB 888 1052 947
imageMagick 968.6KB 305 398 318
ffmpeg 491.9KB 365 337 282

處理613.3k,解析度2000x1052的jpg圖片

方案 大小 最短(毫秒) 最久 平均
thumber 170.5KB 159 348 193
imageMagick 179.5KB 54 101 61
ffmpeg 89.2KB 72 113 79

處理來自android相機的4.5MB,解析度4160x3120的jpg圖片

方案 大小 最短(毫秒) 最久 平均
thumber 1.5MB 998 1206 1048
imageMagick 1.6MB 285 744 345
ffmpeg 618.4KB 188 367 221

處理10.6MB,解析度4570x1984的png圖片

png圖片似乎需要換命令才行,或者預先轉換成jpeg格式

方案 大小 耗時(毫秒)
thumber 15.6MB 3348
imageMagick 10.6MB 5329
ffmpeg 16.6MB 1769

處理2.6MB,解析度2000x1052的png圖片

png圖片似乎需要換命令才行,或者預先轉換成jpeg格式

方案 大小 耗時(毫秒)
thumber 3.5MB 828
imageMagick 2.6MB 1193
ffmpeg 3.5MB 372

##解決png圖片問題,使用三種方案進行png轉jpg

處理2.6MB,解析度2000x1052的png圖片

使用命令

  • imageMagick

    convert in.png out.jpg

  • ffmpe

    ffmpeg -v quiet -i in.png out.jpg

方案 大小 最短(毫秒) 最久 平均
thumber 203.6KB 161 396 208
imageMagick 606KB 95 119 102
ffmpeg 119.1KB 145 172 152

實驗資料在不同機器,不同時間用一定的波動性,屬正常情況

結論:總體來看,ffmpeg表現最好。但是有一個問題——必須使用現有圖片,無法直接使用流。考慮到圖片上傳到本地臨時檔案的時間代價,該方案依然有待商榷