Arbejde med billeder i Python
PIL er Python Imaging Library, som giver python-fortolkeren billedredigeringsmuligheder. Den er udviklet af Fredrik Lundh og flere andre bidragydere. Pillow er den venlige PIL-gaffel og et brugervenligt bibliotek udviklet af Alex Clark og andre bidragydere. Vi arbejder med Pillow.
Installation:
- Linux: Skriv følgende på linux terminal:
pip install Pillow Installation af pip via terminal:
sudo apt-get update
sudo apt-get install python-pip - Windows: Download den passende pudepakke i henhold til din pythonversion. Sørg for at downloade i henhold til den python-version, du har.
Vi vil arbejde med billedmodulet her, som giver en klasse af samme navn og giver en masse funktioner til at arbejde på vores billeder. For at importere billedmodulet skal vores kode begynde med følgende linje:
from PIL import ImageOperationer med billeder:
- Åbn et bestemt billede fra en sti: 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.
- Hent størrelsen på billedet : De forekomster af billedklassen, der oprettes, har mange attributter, en af dens nyttige attribut er størrelse. Python
Nogle andre attributter er: Image.width Image.height Image.format Image.info osv.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
- Gem ændringer i billedet: For at gemme eventuelle ændringer, du har foretaget i billedfilen, skal vi angive sti såvel som billedformat. Python
img . save ( path format ) # format is optional if no format is specified #it is determined from the filename extension
- Rotation af et billede: Billedrotationen skal bruge vinkel som parameter for at få billedet roteret. 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 ()
Bemærk: Der er et valgfrit ekspansionsflag tilgængeligt som et af argumenterne for rotationsmetoden, som, hvis den er sat sand, udvider outputbilledet for at gøre det stort nok til at holde hele det roterede billede. Som det ses i ovenstående kodestykke har jeg brugt en relativ sti, hvor mit billede er placeret i samme mappe som min python-kodefil, en absolut sti kan også bruges. - Beskæring af et billede: Image.crop(box) tager en 4-tuple (venstre øverste højre nederste) pixelkoordinat og returnerer et rektangulært område fra det brugte billede. 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 ()
- Ændre størrelse på et billede: Image.resize(size)- Her er størrelsen angivet som en 2-tuples bredde og højde. 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 ()
- Indsættelse af et billede på et andet billede: Det andet argument kan være en 2-tupel (angiver øverste venstre hjørne) eller en 4-tuple (venstre øverste højre nederst) - i dette tilfælde skal størrelsen på det indsatte billede matche størrelsen på denne boksregion eller Ingen, som svarer til (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.
- Sådan får du et histogram af et billede: Dette vil returnere et histogram af billedet, da en liste over pixel tæller én for hver pixel i billedet. (Et histogram af et billede er en grafisk repræsentation af tonefordelingen i et digitalt billede. Det indeholder, hvad alle lysstyrkeværdierne i et billede er. Det plotter antallet af pixels for hver lysstyrkeværdi. Det hjælper med at udføre eksponeringsindstillingerne.) fra PIL import Image 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 ()
- Transponering af et billede: Denne funktion giver os et spejlbillede af et billede 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 ()
- Opdel et billede i individuelle bånd: Opdeling af et billede i RGB-tilstand skaber tre nye billeder, der hver indeholder en kopi af de originale individuelle bånd. 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: Konvertering af et billede til en X11 bitmap (Et almindeligt tekst binært billedformat). Det returnerer en streng, der indeholder en X11 bitmap, den kan kun bruges til tilstand 1 billeder, dvs. 1 bit pixel sort/hvid billeder. fra PIL import billede 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 ()
- Oprettelse af et miniaturebillede: Denne metode opretter et miniaturebillede af det billede, der åbnes. Det returnerer ikke et nyt billedobjekt, det foretager en ændring på stedet til selve det aktuelt åbnede billedobjekt. Hvis du ikke ønsker at ændre det originale billedobjekt, skal du oprette en kopi og derefter anvende denne metode. Denne metode vurderer også, hvad der er passende for at opretholde billedformatet i henhold til den passerede størrelse. fra PIL import billede 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 ()