Descripción general de la biblioteca PIL
La biblioteca PIL es una excelente biblioteca de terceros para Python. Debe instalarse mediante pip:
pip instalar almohada
La biblioteca PIL admite el almacenamiento, la visualización y el procesamiento de imágenes, puede procesar casi todos los formatos de imagen y puede completar operaciones como hacer zoom, recortar, superponer y agregar líneas, imágenes y texto a la imagen.
Biblioteca PIL Análisis de clase de imagen
En PIL, cualquier archivo de imagen puede usar el objeto Imagen para representar los métodos de lectura y creación de imágenes de la clase Imagen:
Image.open (nombre de archivo) # acuerdo con la imagen de carga parámetros de los archivos Image.new (el modo, tamaño, color) # acuerdo para crear una nueva imagen de un determinado parámetro Image.open (StringIO.StringIO (buffer)) # imágenes adquieren de una cadena Image.frombytes (MODO, tamaño, datos) # crea una imagen según el píxel de datos Image.verify () # comprobación de integridad de archivos de imagen devuelve una excepción
La clase Image tiene 4 atributos comunes para procesar imágenes:
Image.Format # formato de imagen del logotipo o de la fuente, si la imagen no se lee de un archivo, el valor Ninguno es Image.mode # imagen modo de color, "L" imagen en escala de grises, "RGB" imágenes en color verdadero, "CMYK" imagen Publishing Imagen .size # anchura de la imagen y la altura en píxeles (px), el valor de retorno es el de dos tupla (tupla) Image.palette # propiedad paleta, un tipo de retorno ImagePalette
Existen tres métodos de conversión y guardado para las imágenes:
El Image.Save (nombre de archivo, el formato) # Guardar la imagen como nombre de archivo de nombre de archivo, el formato es el formato de imagen Image.convert (MODE) # utilizando diferentes parámetros, convertir la imagen en un nuevo modo de Image.thumbnail (tamaño) # crean reducir el tamaño de imagen Miniatura, el tamaño es una tupla binaria de tamaño de miniatura
Zoom de imagen de clase de imagen y métodos de rotación:
Image.resize (tamaño) # Cambiar el tamaño de la imagen de acuerdo con el tamaño y generar una copia Image.rotate (ángulo) # Rotar la imagen de acuerdo con el ángulo y generar una copia
La clase de imagen puede operar en cada píxel o en cada canal de una imagen RGB por separado. El método split () puede extraer cada canal de color de la imagen RGB, y el método merge () puede sintetizar cada canal independiente en uno nuevo. Imagen:
Image.point (func) # calcula cada elemento según la función de la función func, devuelve una copia de la imagen Image.split () # extracto de cada canal de color de la imagen RGB, una copia de la imagen de la devolución Image.merge (MODO, bandas Scrap) # combinada canal , Usando el modo color, las bandas son el canal de color del nuevo color Image.blend (im1, im2, alpha)
Image.blend (im1, im2, alpha) interpola las dos imágenes im1 e im2 de acuerdo con la siguiente fórmula para generar una nueva imagen: im1 * (1.0-alpha) + im2 * alpha
Las clases ImageFilter e ImageEnhance de la biblioteca PIL proporcionan métodos para filtrar y mejorar imágenes, un total de 10 tipos:
ImageFilter.BLUR # desenfoque imágenes ImageFilter.CONTOUR # efecto contorno de la imagen ImageFilter.DETAIL # detalles del efecto de la imagen ImageFilter.EDGE_ENHANCE # borde de la imagen para mejorar el efecto ImageFilter.EDGE_ENHANCE_MORE # frontera del efecto fortalecimiento de la imagen de umbral ImageFilter.EMBOSS # imagen de alivio efecto ImageFilter.FIND_EDGES # efecto contorno de la imagen ImageFilter.SMOOTH # efecto de suavizado de una imagen ImageFilter.SMOOTH_MORE # imagen umbral de efecto suavizante ImageFilter.SHARPEN # nitidez de imagen
La clase ImageEnhance proporciona requisitos de mejora de imagen más avanzados y funciones como el ajuste de color, brillo, contraste y nitidez:
ImageEnhance.enhance (factor) # valor de la mejora de la propiedad veces factor seleccionado ImageEnhance.Color (IM) # ajustar la imagen balance de color ImageEnhance.Contrast (IM) # ajustar el contraste de la imagen ImageEnhance.Brightness (IM) # Ajuste del brillo ImageEnhance (IM) .Sharpness # para ajustar la nitidez de imagen
Obtener miniatura
from PIL import Image im = Image.open ( " C: \\ bachongying.jpg " ) im.thumbnail (( 128,128 )) im.save ( ' 1bachongying.jpg ' )
Obtener el esquema de la imagen
desde PIL import Imagen desde PIL import ImageFilter im = Image.open ( " C: \\ bachongying.jpg " ) om = im.filter (ImageFilter.CONTOUR) om.save ( ' bachongying2.jpg ' )
Imagen en relieve
de PIL import Imagen de PIL import ImageFilter im = Image.open ( " C: \\ bachongying.jpg " ) om = im.filter (ImageFilter.EMBOSS) om.save ( ' bachongying3.jpg ' )
Hacer una pintura de caracteres chinos
from PIL import Image ascii_char = list ( ' 学习 使 我 快乐' ) def get_char (r, b, g, alpha = 256 ): if alpha == 0: return ' ' gray = int (0.2126 * r + 0.7152 * g + 0.0722 * b) unit = 256 / len (ascii_char) return ascii_char [int (gris // unit)] def main (): im = Image.open ( ' C: \\ bachongying.jpg ' ) WIDTH, HEIGHT = 100, 60 im =im.resize ((WIDTH, HEIGHT)) txt = "" para i in range (HEIGHT): para j in range (WIDTH): txt + = get_char (* im.getpixel ((j, i))) txt + = ' \ n ' fo = abierto ( " pic_char.txt " , " w " ) fo.write (txt) fo.close () main ()