Andrise programmeerimisalane WIKI

Piltide redigeerimine

Pildifaile on võimalik redigeerida suhteliselt piiratud ulatuses. Saab muuta faili tüüpi, suurust, pilti lõigata ja pöörata. Samuti saab kasutada automaagilist funktsiooni värvide sättimiseks, kuid käsitsi värve ega muud sättida ei saa. Piltide redigeerimiseks tuleb sisse laadida images teek.

from google.appengine.api import images

Pildifaile saab hoida nagu muidki andmeid andmebaasis, seega tuleb arvestada, et fail ei tohi ületada 1 MB suurust. Sellest piirangust on võimalik mööda saada BlobStore failihoidlat kasutades, kuid käesolevas õpetuses BlobStore'st juttu ei tule, kuna tegu on ainult tasulises paketis oleva lisaga. BlobStore dokumentatsiooni leiab Google App Engile lehelt.

Pildi laadimine

Pildi redigeerimiseks, tuleb see avada Image klassiga, mis loob redigeeritava pildiobjekti. Parameetriks on pildifaili sisu - see võib tulla näiteks üleslaadimise parameetrina või andmebaasist.

pilt = images.Image(pildifail)

Pildiobjektiga saab läbi viia juba mitmeid erinevaid tegevusi.

Suuruse muutmine

Suuruse muutmine käib pildiobjekti meetodiga resize, mis võtab parameetriteks nõutud laiuse ja kõrguse. Juhul kui faili mõõtmed ei ole võrdselt teisendatavad, siis pilti ei venitata välja, vaid viiakse suurem külg õige mõõduni, lühem külg aga muutub võrdeliselt pikema külje muutusega.

pilt.resize(width = 100, height = 100)

Pööramine

Pildi pööramiseks on käsklus rotate, mis võtab parameetriks pöördenurga. Pilti saab pöörata siiski vaid 90 kraadi kaupa.

pilt.rotate(degrees = 270)

Ümberpööramine

Pilti saab ümber pöörata nii horisontaal kui vertikaalsuunal, pakkudes selleks vastavalt meetodeid horizontal_flip ja vertical_flip.

pilt.vertical_flip()

Lõikamine

Pildist mingi kindla osa lõikamiseks on meetod crop. Erinevalt näiteks PHP sarnasest käsust imagecopyresampled, ei ole lõikekohta määravad parameetrid mitte pikslit absoluutnumbrites, vaid protsentuaalsed väärtusega 0 kuni 1 pildi külje pikkusest. Näiteks kui pildi pikkus on 100 pikslit ning on soov lõigata alates 23. pikslist, siis tuleb lõikekoha alguseks panna väärtus 0.23.

Parameetriteks on siis lõikekasti suhtelised koordinaadid left_x, top_y, right_x ja bottom_y, millest igaühe väärtus jääb 0 ja 1 vahele.

Värvuste sättimine

Värvide ja kontrasti info korrigeerimiseks on võimalik kasutada automaagilist meetodit im_feeling_lucky.

pilt.im_feeling_lucky()

Pildi väljastamine

Pildi väljastamiseks tuleb esiteks muuta pildiobjekt tagasi faili kujule, mida oleks võimalik brauserile saata ning teiseks tuleb seada vastav päis, mis annab teada mis tüüpi pildiga tegu on.

pildifail = pilt.execute_transforms(output_encoding=images.JPEG)
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(pildifail)