详解如何在PIL中从URL中打开一个图像

  • Post category:Python

当使用Python中的Pillow库(PIL)来处理图像时,我们通常需要将图像从本地文件中加载,但有时我们也需要从URL中加载图像。在下面的攻略中,我将向你展示如何在Pillow中从URL中加载图像。

步骤1:安装Pillow库

在进行任何操作之前,首先必须要保证已经安装了Pillow库,可以通过以下命令安装:

pip install Pillow

步骤2:从URL中打开图像

使用Pillow库从URL中打开图像的过程非常简单,我们可以使用PIL.Image.open()函数来从URL中加载图像。以下是示例代码:

from PIL import Image
from io import BytesIO
import requests

url = 'https://avatars.githubusercontent.com/u/6120181?v=4'
response = requests.get(url)
image = Image.open(BytesIO(response.content))

image.show()

在上述代码中:

  • requests.get(url)函数用于获取URL中的图像。
  • BytesIO(response.content)函数用于将获取到的数据转换为BytesIO对象。
  • Image.open()函数用于从BytesIO中打开图像。

在打开图像后,我们可以使用show()函数来显示图像。

另外一个示例代码:

from PIL import Image
import urllib.request

url='https://specials-images.forbesimg.com/imageserve/5eff3ea3e0fb6400078c2701/960x0.jpg?fit=scale'
image=Image.open(urllib.request.urlopen(url))
image.show()

在上述代码中,我们使用了Python的标准库urllib.request来打开URL,并将其传递给Image.open()函数来打开图像。

步骤3:处理图像

有了图像之后,我们可以对其进行各种处理,例如修改大小、旋转、剪切、过滤等。以下是一个将图像裁剪为正方形的示例代码:

from PIL import Image
import urllib.request

url = 'https://avatars.githubusercontent.com/u/6120181?v=4'
image = Image.open(urllib.request.urlopen(url))
width, height = image.size

if width > height:
    left = (width - height) / 2
    right = width - left
    upper = 0
    lower = height
else:
    upper = (height - width) / 2
    lower = height - upper
    left = 0
    right = width

image = image.crop((left, upper, right, lower))
image.show()

在上述代码中,我们通过比较图像的宽度和高度来确定应该裁剪的尺寸。如果宽度大于高度,则裁剪左右两边使其成为正方形;如果高度大于宽度,则裁剪上下两边。

总结

本文介绍了如何使用Python中的Pillow库(PIL)从URL中打开图像。我们使用PIL.Image.open()函数来从URL中加载图像,并使用各种Pillow提供的函数对其进行处理。