.png圖片批量壓縮腳本

目的
應(yīng)用開(kāi)發(fā)中某残,安裝包的大小是很重要的,所以需要對(duì)資源進(jìn)行壓縮怀伦,特別是圖片。這是一個(gè)python編寫(xiě)的簡(jiǎn)單的.png批量壓縮工具凡恍。
環(huán)境配置
python 環(huán)境配置
自然需要 python志秃,見(jiàn)官網(wǎng) https://www.python.org/下載
壓縮API配置
亦需圖片壓縮 API,我們使用的是這個(gè):https://tinypng.com 嚼酝。
第一步:進(jìn)入https://tinypng.com/developers浮还,注冊(cè)一個(gè) Developer API Key,免費(fèi)用戶(hù)一個(gè)月有500張圖的限制闽巩,付費(fèi)則各有不同钧舌,請(qǐng)按需自取。
第二步:下載API對(duì)應(yīng)的lib涎跨。參閱官網(wǎng):https://tinypng.com/developers/reference/python 也有其他語(yǔ)言API洼冻。
終端命令:
sudo -H pip install —upgrade tinify
找到下載目錄,執(zhí)行命令:
sudo python setup.py
如需先安裝 pip隅很,終端命令:
easy_install pip
也可以直接下載壓縮包 https://pypi.python.org/pypi/tinify 或者訪問(wèn) github https://github.com/tinify/tinify-python撞牢,將 build/lib 中的 tinify 目錄拷貝至 Python lib 目錄下:
我的是 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
PS:就算不使用這個(gè)API,僅僅這個(gè)主頁(yè)提供的圖片壓縮服務(wù)也是極好的叔营。

使用向?qū)?br> 填寫(xiě)已申請(qǐng)好的 API_KEY 至 tinify.key="your_key"屋彪,將腳本拷貝至需壓縮圖片的文件夾下,即會(huì)批量壓縮該文件夾中所有大小大于 1KB 的 .png 圖片绒尊。

源碼(忽略第一行):

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ba2da2}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; min-height: 13.0px}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s3 {font-variant-ligatures: no-common-ligatures; color: #ba2da2}span.s4 {font-variant-ligatures: no-common-ligatures; color: #272ad8}span.s5 {font-variant-ligatures: no-common-ligatures; color: #d12f1b}

import os
from tinify import tinify
from os import path

def get_file_name():
    # Initialize
    max_size = 1024
    compressed_size = 100
    dic_path = os.getcwd()
    f_list = os.listdir(os.getcwd())
    out_list = {}

    # Read compress history
    index = 0
    f_history = open("history_compressed.txt", 'a+')
    f_history.seek(0)
    f_history_pics = {}
    for line in f_history:
        f_history_pics[index] = line.strip('\n')
        index += 1

    # do for all files under current directory
    index = 0
    for i in f_list:
        file = dic_path + "/" + os.path.basename(i)
        buffer_file = path.splitext(file)[0] + "Copy" + path.splitext(file)[1]

        # compress all .pngs whitch size > max_size and not in compress history
        if not contains(file, f_history_pics) and path.splitext(file)[1] == '.png' and path.getsize(file) > max_size:
            f_history.write(file + "\n")

            # use API from tinypng.com to compress pictures
            tinify.from_file(file).to_file(buffer_file)

            # replace the origin file with buffer file when their size difference is bigger than compressed_size
            if (path.getsize(file) - path.getsize(buffer_file) < compressed_size):
                os.remove(buffer_file)
            else:
                os.rename(buffer_file, file)
                print(file)
            index += 1

    f_history.flush()
    f_history.close()
    return out_list

def contains(name, name_his={}):
    for i in range(0, len(name_his)):
        if name == name_his[i]:
            return True
    return False

tinify.key = "YOUR_KEY"
get_file_name()
print("finish!")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末畜挥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子垒酬,更是在濱河造成了極大的恐慌砰嘁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勘究,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡斟冕,警方通過(guò)查閱死者的電腦和手機(jī)口糕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)磕蛇,“玉大人景描,你說(shuō)我怎么就攤上這事⌒闫玻” “怎么了超棺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)呵燕。 經(jīng)常有香客問(wèn)我棠绘,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任氧苍,我火速辦了婚禮夜矗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘让虐。我一直安慰自己紊撕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布赡突。 她就那樣靜靜地躺著对扶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惭缰。 梳的紋絲不亂的頭發(fā)上浪南,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音从媚,去河邊找鬼逞泄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拜效,可吹牛的內(nèi)容都是我干的喷众。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼紧憾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼到千!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起赴穗,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤憔四,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后般眉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體了赵,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年甸赃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柿汛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡埠对,死狀恐怖络断,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情项玛,我是刑警寧澤貌笨,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站襟沮,受9級(jí)特大地震影響锥惋,放射性物質(zhì)發(fā)生泄漏昌腰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一净刮、第九天 我趴在偏房一處隱蔽的房頂上張望剥哑。 院中可真熱鬧,春花似錦淹父、人聲如沸株婴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)困介。三九已至,卻和暖如春蘸际,著一層夾襖步出監(jiān)牢的瞬間座哩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工粮彤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留根穷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓导坟,卻偏偏與公主長(zhǎng)得像屿良,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惫周,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,478評(píng)論 6 427
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評(píng)論 25 707
  • 看似是朋友尘惧,往往不是朋友;看似不是朋友者递递,卻常常是朋友喷橙。 ——德默克...
    彬彬888閱讀 312評(píng)論 0 0
  • 前不久,M君找到程先生登舞,訴說(shuō)他的苦衷——其實(shí)也不是什么要命的事情贰逾,只不過(guò)說(shuō)他年屆四十之后,“那方面”不行了菠秒。程先生...
    海月先生閱讀 546評(píng)論 2 1
  • 一對(duì)新人點(diǎn)燃了一群即將要死去的人們心中的熱情似踱。 那個(gè)姑娘在監(jiān)獄里發(fā)現(xiàn)了自己本以為已經(jīng)死去的未婚夫,使她從已割舍掉世...
    Happywu閱讀 1,657評(píng)論 0 1