PIL ir Python attēlveidošanas bibliotēka, kas nodrošina Python tulkam attēlu rediģēšanas iespējas. To izstrādāja Fredriks Lunds un vairāki citi līdzstrādnieki. Pillow ir draudzīga PIL dakša un viegli lietojama bibliotēka, ko izstrādājis Alekss Klārks un citi līdzstrādnieki. Mēs strādāsim ar Pillow.
Java programmēšanas pirmskaitļi
Uzstādīšana:
- Linux: Linux terminālī ierakstiet:
pip install PillowPip instalēšana caur termināli:sudo apt-get update
sudo apt-get install python-pip - Windows: Lejupielādēt atbilstošo spilvenu paketi atbilstoši jūsu python versijai. Noteikti lejupielādējiet to atbilstoši jūsu python versijai.
Šeit mēs strādāsim ar attēla moduli, kas nodrošina tāda paša nosaukuma klasi un nodrošina daudzas funkcijas, lai strādātu ar mūsu attēliem. Lai importētu attēla moduli, mūsu kodam jāsākas ar šādu rindiņu:
from PIL import ImageDarbības ar attēliem:
- Atveriet konkrētu attēlu no ceļa: 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.
- Izgūt attēla izmēru : Izveidotajiem Image klases gadījumiem ir daudz atribūtu, viens no tās noderīgajiem atribūtiem ir izmērs. Python
Daži citi atribūti ir: Image.width Image.height Image.format Image.info utt.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
- Saglabāt izmaiņas attēlā: Lai saglabātu visas attēla failā veiktās izmaiņas, mums ir jānorāda ceļš, kā arī attēla formāts. Python
img.save(path format) # format is optional if no format is specified #it is determined from the filename extension
- Attēla pagriešana: Attēla pagriešanas parametram ir nepieciešams leņķis, lai attēlu pagrieztu. 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()
Piezīme. Kā viens no pagriešanas metodes argumentiem ir pieejams izvēles izvēršanas karodziņš, kas, ja tas ir iestatīts kā patiess, izvērš izvades attēlu, lai tas būtu pietiekami liels, lai tajā varētu noturēt visu pagriezto attēlu. Kā redzams iepriekš minētajā koda fragmentā, esmu izmantojis relatīvu ceļu, kur mans attēls atrodas tajā pašā direktorijā, kur mans python koda fails, var izmantot arī absolūto ceļu.
- Attēla apgriešana: Image.crop(box) ņem 4 korpusu (kreisais augšējais labais apakšējais) pikseļu koordinātas un atgriež izmantotā attēla taisnstūra apgabalu. 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()
- Attēla izmēra maiņa: Image.resize(size) — šeit izmērs tiek norādīts kā 2 kopas platums un augstums. 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()
- Attēla ielīmēšana citā attēlā: Otrais arguments var būt 2 korpuss (norādot augšējo kreiso stūri) vai 4 korpuss (kreisais augšējais labais apakšējais) — šajā gadījumā ielīmētā attēla izmēram ir jāatbilst šī lodziņa reģiona lielumam vai Nav, kas ir līdzvērtīgs (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.
- Attēla histogrammas iegūšana: Tas atgriezīs attēla histogrammu, jo pikseļu sarakstā katram attēla pikselim tiek skaitīts viens. (Attēla histogramma ir digitālā attēla tonālā sadalījuma grafisks attēlojums. Tajā ir norādītas visas attēlā esošās spilgtuma vērtības. Tā attēlo pikseļu skaitu katrai spilgtuma vērtībai. Tas palīdz veikt ekspozīcijas iestatījumus.) no PIL importa attēla 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()
- Attēla transponēšana: Šī funkcija sniedz mums attēla spoguļattēlu 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()
- Sadaliet attēlu atsevišķās joslās: Sadalot attēlu RGB režīmā, tiek izveidoti trīs jauni attēli, katrs satur oriģinālo atsevišķu joslu kopijas. 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()
- bitkarte: Attēla konvertēšana uz X11 bitkarti (Vienkārša teksta bināra attēla formāts). Tas atgriež virkni, kas satur X11 bitkarti, to var izmantot tikai 1. režīma attēliem, t.i., 1 bita pikseļa melnbaltiem attēliem. no PIL importa attēla 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()
- Sīktēla izveide: Izmantojot šo metodi, tiek izveidots atvērtā attēla sīktēls. Tas neatgriež jaunu attēla objektu, tas veic izmaiņas pašlaik atvērtajā attēla objektā. Ja nevēlaties mainīt oriģinālo attēla objektu, izveidojiet kopiju un pēc tam izmantojiet šo metodi. Šī metode arī novērtē, vai ir pareizi saglabāt attēla malu attiecību atbilstoši nodotajam izmēram. no PIL importa attēla 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()