Darbas su vaizdais Python
PIL yra Python vaizdų biblioteka, kuri suteikia python interpretatoriui vaizdo redagavimo galimybes. Jį sukūrė Fredrikas Lundhas ir keli kiti bendradarbiai. Pagalvė yra patogi PIL šakutė ir paprasta naudoti biblioteka, kurią sukūrė Alexas Clarkas ir kiti bendradarbiai. Dirbsime su pagalve.
Montavimas:
- Linux: „Linux“ terminale įveskite:
pip install Pillow Pip montavimas per terminalą:
sudo apt-get update
sudo apt-get install python-pip - „Windows“: Atsisiųsti atitinkamą pagalvės paketą pagal jūsų python versiją. Būtinai atsisiųskite pagal turimą python versiją.
Čia dirbsime su vaizdo moduliu, kuriame pateikiama to paties pavadinimo klasė ir daug funkcijų, skirtų dirbti su vaizdais. Norėdami importuoti vaizdo modulį, mūsų kodas turėtų prasidėti šia eilute:
from PIL import ImageOperacijos su vaizdais:
- Atidarykite konkretų vaizdą iš kelio: Python
#img = Image.open(path) # On successful execution of this statement # an object of Image type is returned and stored in img variable) try : img = Image . open ( path ) except IOError : pass # Use the above statement within try block as it can # raise an IOError if file cannot be found # or image cannot be opened.
- Gauti vaizdo dydį : Sukurti vaizdo klasės egzemplioriai turi daug atributų, vienas iš naudingų jos atributų yra dydis. Python
Kai kurie kiti atributai: Image.width Image.height Image.format Image.info ir kt.from PIL import Image filename = 'image.webp' with Image . open ( filename ) as image : width height = image . size #Image.size gives a 2-tuple and the width height can be obtained
- Išsaugokite pakeitimus paveikslėlyje: Norėdami išsaugoti visus vaizdo failo pakeitimus, turime nurodyti kelią ir vaizdo formatą. Python
img . save ( path format ) # format is optional if no format is specified #it is determined from the filename extension
- Vaizdo pasukimas: Vaizdo pasukimo parametras turi būti kampas, kad vaizdas būtų pasuktas. Python
from PIL import Image def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) #Angle given img = img . rotate ( 180 ) #Saved in the same relative location img . save ( 'rotated_picture.webp' ) except IOError : pass if __name__ == '__main__' : main ()
Pastaba: kaip vienas iš pasukimo metodo argumentų yra pasirenkama išplėtimo vėliavėlė, kuri, jei nustatyta, išplečia išvesties vaizdą, kad jis būtų pakankamai didelis, kad tilptų visas pasuktas vaizdas. Kaip matyti aukščiau esančiame kodo fragmente, naudojau santykinį kelią, kai mano vaizdas yra tame pačiame kataloge kaip ir mano python kodo failas, taip pat gali būti naudojamas absoliutus kelias. - Vaizdo apkarpymas: Image.crop(box) paima 4 kortelių (kairėje viršutinėje dešinėje apatinėje) pikselių koordinates ir grąžina stačiakampę sritį iš naudojamo vaizdo. Python
from PIL import Image def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) width height = img . size area = ( 0 0 width / 2 height / 2 ) img = img . crop ( area ) #Saved in the same relative location img . save ( 'cropped_picture.webp' ) except IOError : pass if __name__ == '__main__' : main ()
- Vaizdo dydžio keitimas: Image.resize(size) – čia dydis pateikiamas kaip 2 pločio ir aukščio korta. Python
from PIL import Image def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) width height = img . size img = img . resize (( width / 2 height / 2 )) #Saved in the same relative location img . save ( 'resized_picture.webp' ) except IOError : pass if __name__ == '__main__' : main ()
- Vaizdo įklijavimas į kitą paveikslėlį: Antrasis argumentas gali būti 2 kortelių (nurodant viršutinį kairįjį kampą) arba 4 kortelių (kairiajame viršutiniame dešiniajame apatiniame kampe) – šiuo atveju įklijuoto vaizdo dydis turi atitikti šio laukelio regiono dydį arba Nėra, kuris atitinka (0 0). Python
from PIL import Image def main (): try : #Relative Path #Image on which we want to paste img = Image . open ( 'picture.webp' ) #Relative Path #Image which we want to paste img2 = Image . open ( 'picture2.webp' ) img . paste ( img2 ( 50 50 )) #Saved in the same relative location img . save ( 'pasted_picture.webp' ) except IOError : pass if __name__ == '__main__' : main () ##An additional argument for an optional image mask image is also available.
- Vaizdo histogramos gavimas: Tai grąžins vaizdo histogramą, nes pikselių sąraše bus skaičiuojama po vieną kiekvienam vaizdo pikseliui. (Vaizdo histograma yra grafinis tonų pasiskirstymo skaitmeniniame vaizde atvaizdas. Jame pateikiamos visos vaizde esančios ryškumo reikšmės. Ji atvaizduoja kiekvienos ryškumo reikšmės pikselių skaičių. Padeda nustatyti ekspozicijos nustatymus.) iš PIL importuoti vaizdą. Python
def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) #Getting histogram of image print img . histogram () except IOError : pass if __name__ == '__main__' : main ()
- Vaizdo perkėlimas: Ši funkcija suteikia mums veidrodinį vaizdo vaizdą Python
from PIL import Image def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) #transposing image transposed_img = img . transpose ( Image . FLIP_LEFT_RIGHT ) #Save transposed image transposed_img . save ( 'transposed.webp' ) except IOError : pass if __name__ == '__main__' : main ()
- Padalinkite vaizdą į atskiras juostas: Padalijus vaizdą RGB režimu sukuriami trys nauji vaizdai, kurių kiekviename yra originalių atskirų juostų kopijos. Python
from PIL import Image def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) #splitting the image print img . split () except IOError : pass if __name__ == '__main__' : main ()
- tobitmap: Vaizdo konvertavimas į X11 bitmap (paprasto teksto dvejetainio vaizdo formatas). Ji grąžina eilutę, kurioje yra X11 taškinė schema, ji gali būti naudojama tik 1 režimo vaizdams, t. y. 1 bito pikselio nespalvotiems vaizdams. iš PIL importo paveikslėlio Python
def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) print img . mode #converting image to bitmap print img . tobitmap () print type ( img . tobitmap ()) except IOError : pass if __name__ == '__main__' : main ()
- Miniatiūros kūrimas: Šis metodas sukuria atidaryto vaizdo miniatiūrą. Jis negrąžina naujo vaizdo objekto, jis vietoje modifikuoja patį šiuo metu atidarytą vaizdo objektą. Jei nenorite keisti pradinio vaizdo objekto, sukurkite kopiją ir pritaikykite šį metodą. Šis metodas taip pat įvertina, ar tinka išlaikyti vaizdo formato santykį pagal perduodamą dydį. iš PIL importo paveikslėlio Python
def main (): try : #Relative Path img = Image . open ( 'picture.webp' ) #In-place modification img . thumbnail (( 200 200 )) img . save ( 'thumb.webp' ) except IOError : pass if __name__ == '__main__' : main ()