logo

Werken met afbeeldingen in Python

PIL is de Python Imaging Library die de Python-interpreter mogelijkheden biedt voor het bewerken van afbeeldingen. Het is ontwikkeld door Fredrik Lundh en verschillende andere bijdragers. Pillow is de gebruiksvriendelijke PIL-vork en een eenvoudig te gebruiken bibliotheek, ontwikkeld door Alex Clark en andere bijdragers. Wij gaan samenwerken met Pillow.

Installatie:

  • Linux: Typ op de Linux-terminal het volgende:
    pip install Pillow
    Pip installeren via terminal:
    sudo apt-get update  
    sudo apt-get install python-pip
  • Ramen: Downloaden het juiste kussenpakket volgens uw Python-versie. Zorg ervoor dat u downloadt volgens de Python-versie die u heeft.

We zullen hier werken met de Image Module, die een klasse met dezelfde naam biedt en veel functies biedt om aan onze afbeeldingen te werken. Om de Image-module te importeren, moet onze code beginnen met de volgende regel:



 from PIL import Image

Bewerkingen met afbeeldingen:

  • Open een bepaalde afbeelding vanuit een pad: 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. 
  • Grootte van afbeelding ophalen : De exemplaren van de Image-klasse die worden gemaakt, hebben veel attributen. Een van de nuttige attributen is grootte. Python
    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 
    Enkele andere kenmerken zijn: Image.width Image.height Image.format Image.info enz.
  • Wijzigingen in afbeelding opslaan: Om eventuele wijzigingen die u in het afbeeldingsbestand hebt aangebracht op te slaan, moeten we zowel het pad als het afbeeldingsformaat opgeven. Python
    img.save(path format) # format is optional if no format is specified  #it is determined from the filename extension 
  • Een afbeelding roteren: De beeldrotatie heeft een hoek nodig als parameter om de afbeelding te laten roteren. 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() 
    een afbeelding roteren in Python' src='//techcodeview.com/img/python/71/working-with-images-in-python.webp' title=Opmerking: Er is een optionele uitbreidingsvlag beschikbaar als een van de argumenten van de rotatiemethode, die, indien ingesteld op True, de uitvoerafbeelding uitbreidt om deze groot genoeg te maken om de volledig geroteerde afbeelding te bevatten. Zoals te zien is in het bovenstaande codefragment, heb ik een relatief pad gebruikt waarbij mijn afbeelding zich in dezelfde map bevindt als mijn Python-codebestand. Een absoluut pad kan ook worden gebruikt.
  • Een afbeelding bijsnijden: Image.crop(box) neemt een pixelcoördinaat van vier (linksboven, rechtsonder) pixelcoördinaat en retourneert een rechthoekig gebied uit de gebruikte afbeelding. 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() 
    een afbeelding bijsnijden in Python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-1.webp' title=
  • Het formaat van een afbeelding wijzigen: Image.resize(size) - Hier wordt de grootte weergegeven als een breedte en hoogte van twee keer. 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() 
    het formaat van een afbeelding wijzigen in Python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-2.webp' title=
  • Een afbeelding op een andere afbeelding plakken: Het tweede argument kan een 2-tupel zijn (die de linkerbovenhoek specificeert) of een 4-tupel (linksboven rechtsonder) - in dit geval moet de grootte van de geplakte afbeelding overeenkomen met de grootte van dit kadergebied of Geen, wat equivalent is aan (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. 
    een afbeelding op een andere plakken in Python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-3.webp' title=
  • Een histogram van een afbeelding verkrijgen: Hierdoor wordt een histogram van de afbeelding geretourneerd, aangezien een lijst met pixels één telt voor elke pixel in de afbeelding. (Een histogram van een afbeelding is een grafische weergave van de toonverdeling in een digitaal beeld. Het bevat alle helderheidswaarden in een afbeelding. Het plot het aantal pixels voor elke helderheidswaarde. Het helpt bij het uitvoeren van de belichtingsinstellingen.) van 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() 
    een histogram-van-afbeelding-in-python-kopie verkrijgen' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-4.webp' title=


  • Een afbeelding transponeren: Deze functie geeft ons het spiegelbeeld van een afbeelding 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() 
    een afbeelding in Python transponeren' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-5.webp' title=
  • Splits een afbeelding in afzonderlijke banden: Door een afbeelding in de RGB-modus te splitsen, ontstaan ​​er drie nieuwe afbeeldingen die elk een kopie van de originele afzonderlijke banden bevatten. 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() 
    een afbeelding splitsen in Python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-6.webp' title=
  • tobitmap: Een afbeelding converteren naar een X11-bitmap (een binair afbeeldingsformaat met platte tekst). Het retourneert een string met een X11-bitmap. Deze kan alleen worden gebruikt voor modus 1-afbeeldingen, d.w.z. 1 bit pixel zwart-witafbeeldingen. van PIL-importafbeelding 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() 
    afbeelding converteren naar bitmap in python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-7.webp' title= afbeelding converteren naar bitmao in python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-8.webp' title=
  • Een miniatuur maken: Met deze methode wordt een miniatuur gemaakt van de afbeelding die wordt geopend. Er wordt geen nieuw afbeeldingsobject geretourneerd, maar er worden ter plekke wijzigingen aangebracht aan het momenteel geopende afbeeldingsobject zelf. Als u het originele afbeeldingsobject niet wilt wijzigen, maak dan een kopie en pas deze methode toe. Deze methode evalueert ook of het geschikt is om de beeldverhouding van de afbeelding te behouden op basis van de doorgegeven grootte. van PIL-importafbeelding 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() 
    miniatuur van afbeelding maken in Python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-9.webp' title=
Quiz maken