我常常使用圖片。公衆號文章發文也好,仍是生活中要使用素材。圖片是一種比文字更加直觀的載體。
可是圖片更加佔用帶寬,不少軟件都對圖片有大小限制。圖片太大也會影響加載速度。
我試過幾款圖片壓縮工具,好比 tinypng 和 tinyjpg 很是好用,體驗也很是棒。
可是它存在幾個侷限的地方:vue
因此但願本身能作一款簡單好用的圖片工具,順便定製一些本身經常使用的功能。python
個人初步設想是這樣的:
1, 先經過命令行的形式來使用,很是方便,後面若是有需求再寫界面。git
picom 圖片名稱.jpg
這條命令能夠對圖片進行智能壓縮。格式爲原來的格式,生成的新圖片名字爲
圖片名稱_picom.jpggithub
2,指定新文件名web
picom name.jpg -o new_name.png
圖片的格式也將根據新的文件名稱跟着變化服務器
3,只指定格式markdown
picom name.jpg --format png
圖片指定爲新的格式,可是文件名仍是默認的。app
4,裁剪大小函數
picom name.jpg --size normal
圖片將被裁剪成正常大小,能夠設置幾檔經常使用的工具
5,裁剪指定具體大小
picom name.jpg --size 920*520
6, 上傳到圖牀
picom name.jpg --upload
上傳到圖牀之後,返回圖牀地址。圖牀的地址用什麼形式保存還在思考。
pillow 是 python 處理圖片的一個很是厲害的庫 , 帶有圖片壓縮的功能。
我前後嘗試使用 pillow 的如下 API 對圖片進行壓縮,獲得的結果不是很好。
1,quality 參數
save 方法當中的 quality 參數只適合用在 jpg 格式上,一般 80 左右的質量不會有明顯的感受。 用在 png 格式上無效,可是也不報錯。
2,optimize 參數
optimize 參數直接壓縮沒有明顯效果。
3,quantize 方法
quantize 是主要用到的壓縮優化函數,在 png 格式壓縮上,能減小 70% 左右的空間,可是顏色差別明顯。
這是壓縮後效果對比:
4, convert 方法
經過把 png的RGBA 格式轉化成 RGB 格式,能夠減小大約 20% 的大小
5,PNG 以 jpg 格式保存
先經過 convert 方法轉成 RGB 格式,而後另存爲 jpg 格式,圖片效果沒有明顯減弱,可是大小迅速減小。
pillow 目前不太適合作 PNG 圖片壓縮處理,jpg 能夠做爲備選。 pillow 的主要應用場景能夠用在灰度轉化,尺寸控制方面,這些功能等把核心的壓縮問題解決之後再加。