Python Pillow – 使用图像模块

Python Pillow – 使用图像模块

在这篇文章中,我们将看到如何在Python中使用PIL的图像模块。首先,让我们看看如何安装PIL。

安装:

Linux:在Linux终端键入以下内容。

pip install Pillow

通过终端安装pip。

sudo apt-get update
sudo apt-get install python-pip

使用图像模块工作

在这里,我们将通过图像模块提供的一些方法和属性,具体如下。

  • Open Image,
  • Save Image,
  • 图像的大小。
  • Rotate Image,
  • Crop Image,
  • 调整图像大小和更多。

让我们借助一些例子来逐一讨论。

1.打开图片:

为了使用PIL打开图像,我们使用open()方法。

语法: PIL.Image.open(fp, mode=’r’, formats=None)

# importing Image from PIL
from PIL import Image
 
# open an image
img = Image.open('gfg.png')

输出:

Python Pillow - 使用图像模块

2.检索图像的尺寸:

为了检索图像的大小,我们将使用图像对象所提供的属性,即:Image.size属性。

语法: Image.size

from PIL import Image
   
with Image.open("gfg.png") as image:
    width, height = image.size
 
print((width,height))

输出:

(200, 200)

3.保存图像中的变化

为了保存图像,我们使用Image.save()方法。

语法: Image.save(fp, format=None, **params)

参数:

  • fp – 一个文件名(字符串)、pathlib.Path对象或文件对象。
  • format – 可选的格式覆盖。如果省略,要使用的格式由文件名的扩展名决定。如果使用的是文件对象而不是文件名,应该总是使用这个参数。
  • options – 给图像写入器的额外参数。

返回: None

from PIL import Image
   
img = Image.open("gfg.png")
 
img.save("logo.jpg")

输出:

Python Pillow - 使用图像模块

4.图像旋转:

图像旋转需要一个角度作为参数来获得图像的旋转。

语法: Image.rotate(angle, resample=0, expand=0, center=None, translate=None, fillcolor=None)

参数:

  • angle – 以逆时针方向为度。
  • resample – 一个可选的重采样过滤器。
  • expand – 可选的扩展标志。如果为真,扩展输出图像,使其足够大,以容纳整个旋转的图像。
  • center – 可选的旋转中心(一个2元组)。原点是左上角。默认是图像的中心。
  • translate – 一个可选的旋转后翻译(一个2元组)。
  • fillcolor – 可选的颜色,用于旋转图像外的区域。
from PIL import Image
 
img = Image.open("gfg.png")
 
rot_img = img.rotate(180)
 
rot_img.save("rotated_gfg.png")

输出:

Python Pillow - 使用图像模块

原始图片

Python Pillow - 使用图像模块

旋转后的图片

5.裁剪图像:

Image.crop(box)接收一个四元组(左、上、右、下)像素坐标,并从所用图像中返回一个矩形区域。

语法: PIL.Image.crop(box = None)

参数:

  • box – 一个4元组,定义了左、上、右和下像素坐标。

返回类型: 图像(以(左、上、右、下)元组的形式返回一个矩形区域)。

返回: 一个图像对象。

from PIL import Image
 
#  open image and get size
img = Image.open("gfg.jpg")
width, height = img.size
 
# cropped image using coordinates
area = (0, 0, width/2, height/2)
crop_img = img.crop(area)
crop_img.save("cropped_image.jpg")

输出:

Python Pillow - 使用图像模块

Cropped Image

6.调整图片的大小:

Image.resize(size)是用来调整大小的。这里的尺寸是以2元的宽度和高度提供的。

语法: Image.resize(size, resample=0)

参数:

  • size – 请求的尺寸,以像素为单位,是一个2元组:(宽度,高度)。
  • resample – 一个可选的重采样过滤器。这可以是PIL.Image.NEAREST(使用最近的邻居)、PIL.Image.BILINEAR(线性插值)、PIL.Image.BICUBIC(三次样条插值)或PIL.Image.LANCZOS(高质量降采样过滤器)中的一个。如果省略,或者图像有模式 “1 “或 “P”,则设置为PIL.Image.NEAREST。

返回类型: 一个图像对象。

from PIL import Image
 
img = Image.open("gfg.png")
width, height = img.size
    
#resizing the image 
img = img.resize((width//2, height//2))
       
img.save("resized_picture.png")

输出:

Python Pillow - 使用图像模块

Resized Image

7.将一个图像粘贴到另一个图像上:

第二个参数可以是一个2元组(指定左上角),也可以是一个4元组(左、上、右、下)–在这种情况下,粘贴的图像的大小必须与这个方框区域的大小相匹配,或者无,相当于(0,0)。

语法:

PIL.Image.Image.paste(image_1, image_2, box=None, mask=None)

或者

image_object.paste(image_2, box=None, mask=None)

参数:

  • image_1/image_object : 它是要粘贴其他图像的图像。
  • image_2 : 源图像或像素值(整数或元组)。
  • box : 一个可选的4元组,给出要粘贴的区域。如果使用一个2元组,它将被视为左上角。如果省略或没有,源文件将被粘贴到左上角。
  • mask : 一个可选的遮罩图像。

如果一个图像被作为第二个参数给出,而没有第三个参数,则盒子默认为(0,0),第二个参数被解释为一个掩码图像。

from PIL import Image
 
img1 = Image.open("gfg.jpg")
 
#pasting img2 on img1
img2 = Image.open("gfg.png")
img1.paste(img2, (50, 50))
 
img1.save("pasted_picture.jpg")

输出:

Python Pillow - 使用图像模块

8.转换图像:

这个功能给了我们一个图像的镜像

语法: Transpose image (flip or rotate in 90 degree steps)

参数:

  • method – PIL.Image.FLIP_LEFT_RIGHT、PIL.Image.FLIP_TOP_BOTTOM、PIL.Image.ROTATE_90、PIL.Image.ROTATE_180、PIL.Image.ROTATE_270或PIL.Image.TRANSPOSE其中之一。

返回类型: 图像对象。

from PIL import Image
 
img = Image.open("gfg.png")     
 
#flipping the image by 180 degree horizontally
transposed_img = img.transpose(Image.FLIP_LEFT_RIGHT)
        
transposed_img.save("transposed.png")

输出:

Python Pillow - 使用图像模块

原始图像

Python Pillow - 使用图像模块

转置的图像

9.创建缩略图:

这个方法创建一个被打开的图像的缩略图。它并不返回一个新的图像对象,而是对当前打开的图像对象本身进行原地修改。如果你不想改变原始图像对象,可以创建一个副本,然后应用这个方法。这个方法也会根据所传递的尺寸来评估是否合适,以保持图像的长宽比。

语法: Image.thumbnail(size, resample=3)

参数:

  • size – 要求的尺寸。
  • resample – 可选的重采样过滤器。

返回类型: 图像对象.

from PIL import Image
 
img = Image.open("gfg.png")
 
img.thumbnail((200, 200))
 
img.save("thumb.png")

输出:

Python Pillow - 使用图像模块

200 x 200像素的缩略图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python pil