Örvitinn

Gamlar myndir minnkaðar með Python

Ákvað að taka aðeins til á vefþjóninum þar sem plássið er að verða uppurið. Ég er náttúrulega með fáránlega lítinn disk, 1.6GB. Hef reynt að henda sem mestu út sem ég nota ekki en er þó enn vafalítið með slatta af óþarfa á servernum.

Skrifaði lítið Python skrift til að minnka myndirnar, ekki mjög flókið, labba í gegnum alla undirfoldera og minnka .jpg myndir sem enda ekki á "_t.jpg", þar sem það eru thumbnail myndirnar. Þar sem ég vissi að myndirnar voru allar annað hvort 800x600 eða 600x800 gat ég harðkóðað þetta og sleppt ýmsum testum.

Ég sparaði um 30MB (rúmlega 50%) með því að keyra þetta á myndirnar frá 2001 og 2002

import Image
import os.path

def minnka(mynd):
    x,y = mynd.size
    if x > y:
        return mynd.resize((400,300) ,Image.ANTIALIAS)
    else:
        return mynd.resize((300,400) ,Image.ANTIALIAS)

def minnka_myndir(arg, dirname, file_names):
    for skra in file_names:
        if skra.lower().endswith(".jpg") and not skra.lower().endswith("_t.jpg"):
            nafn = os.path.join(dirname, skra)
            mynd = Image.open(nafn)
            mynd = minnka(mynd)
            mynd.save(nafn)

if __name__ == "__main__":
    import os
    os.path.walk(os.getcwd(), minnka_myndir, None)

os.path.walk er ansi skemmtilegt fall. Það labbar í gegnum alla undirfoldera og kallar á fall sem maður lætur í té. Semsagt, fyrir hvern folder er kallað á fallið með nafninu á foldernum, lista af öllum skrám í folderum og parameter sem maður gaf sjálfur, í þessu tilviki setti ég None þar sem ég þarf ekki þennan auka parameter og hunsa hann í fallinu. Annars er os.walk nýtt í útgáfu 2.3 af Python og gerir víst nokkurn vegin það sama en er hentugra fyrir listavinnslu, ég nennti bara ekki að spá í því núna.

python
Athugasemdir

Gummi Jóh - 11/10/04 10:38 #

Maður er kannski óttalegt nörd en ég hló þegar ég sá stærðina á harða diskinum :)

Matti Á. - 11/10/04 10:46 #

Já, þetta er eiginlega grátbroslegt :-) Bróðir minn fékk þessa tölvu í fermingargjöf. Hann er tuttugu og eins. :-)

Vélin er pentinum 133mhz með 80MB minni :-O En þetta virkar yfirleitt. Er að minnsta kosti á bak við feitan link.