Introducción al procesamiento de imágenes en Python con Pillow

Sucede que vas a la oficina de correos y ves otra colección de artículos que nunca leíste, pero aquí las estrellas convergieron tanto que abrí el artículo y lo leí, y descubrí dónde sería útil en la práctica. Y ahora quiero compartir un artículo con Habr, para que si alguien necesita una guía simple y comprensible para trabajar con imágenes en Python, por favor.







Pillow es una biblioteca de imágenes de código abierto gratuita (en adelante Biblioteca de imágenes ) en Python que agrega soporte para abrir, modificar y guardar imágenes en varias extensiones de su código.







Empecemos



La clase más importante en la biblioteca de imágenes Python es la clase Image, definida en el módulo del mismo nombre. Usamos open () para abrir una imagen en nuestro directorio local como se muestra a continuación:







from PIL import Image
sample = Image.open('pena.jpg')
      
      





¡Es simple! Ahora puede leer imágenes usando Pillow , lo que significa que puede comenzar a procesar la imagen usándolo. También puedes comprobar el tipo de imagen que acabamos de subir.







type(sample)
PIL.JpegImagePlugin.JpegImageFile
      
      





Puede mirar las propiedades de la imagen, por ejemplo:







  • formato
  • el tamaño
  • Modo de color


sample.format
'JPEG'
sample.size
(640, 640)
sample.mode
'RGB'
      
      





, , show







sample.show() #   ,     PNG
      
      













Pillow  , , , jpg png .







, Python , jpg, png.







import os
import sys
from PIL import Image
jpg_images = [image for image in os.listdir() if image.endswith('.jpg')]
for jpg_image in jpg_images:
    try:
        new_name = jpg_image.split('.')[0] + '.png'
        Image.open(jpg_image).save(new_name)
    except IOError as error:
        print('Couldn\'t read {} '.format(jpg_image))
      
      











, , , jpg, .png, . .









Pillow , , , .







from PIL import Image
picture = Image.open('pena.png')
cord = (10, 10, 640, 340) # , , , 
new_picture = picture.crop(cord)
new_picture.show()
      
      











, . .







(x, y) , (x2, y2) .









Pillow , .







.









from PIL import Image
image = Image.open('pena.png')
resized_image = image.resize((320, 320))
resized_image.save('resized.png')
      
      





, 320 320.









from PIL import Image
image = Image.open('pena.png')
rotated_img = image.rotate(80)
rotated_img.save('./rotation/rotated_img.png')
      
      











360 — , .









from PIL import Image 
images = ['pena.jpg']
for img in images:
    try:
        org_img = Image.open(img)
        for angle in range(1, 361):
            image_name = str(angle)+'.jpg'
            new_img = org_img.rotate(angle)
            new_img.save('./rotation/'+image_name)
    except IOError:
        print('Couldn\'t read {}'.format(img))
      
      





, 360 , .















— . , , .







, , ,- , , .







Pillow , BLUR, BoxBlur, CONTOUR, FIND_EDGES, Filter, GaussianBlur, Kernel, MaxFilter, MedianFilter, SHARPEN, SMOOTH ..









, FIND_EDGES.







from PIL import Image
from PIL import Image, ImageFilter
image = Image.open('pena.jpg')
edges = image.filter(ImageFilter.FIND_EDGES)
edges.show()
      
      











Python Pillow , .









, Pillow Python,







from PIL import Image
image = Image.open(open('pena.jpg', 'rb'))
      
      





URL



Pillow . GET-request , , Pillow .







import requests
from PIL import Image
url = 'http://pena.marketing/images/Logo1.png'
raw = requests.get(url, stream=True).raw
Image.open(raw).show()
      
      













Pillow , . Image.new() .







:







new = Image.new(mode, shape, color)
      
      





:







from PIL import Image
new_img = Image.new('RGB', (500, 500), 'blue')
new_img.show()
      
      













Pillow . . , .









.







from PIL import Image, ImageDraw
new_img = Image.new('RGB', (400, 400), 'black')
pencil = ImageDraw.Draw(new_img)
pencil.rectangle((200, 50, 300, 300), fill ='green')
new_img.show()
      
      











(x, y) , (x2, y2) .









Pillow .







from PIL import Image , ImageDraw, ImageFont 
new_img = Image.new('RGB', (200, 200), 'black')
font = ImageFont.load_default()
pencil = ImageDraw.Draw(new_img)
pencil.text((100,100),'Hello World',  font=font, fill='blue', size = 36)
new_img.show()
      
      











:










All Articles