📜  Python Pillow – 处理图像

📅  最后修改于: 2022-05-13 01:54:18.889000             🧑  作者: Mango

Python Pillow – 处理图像

在本文中,我们将看到如何在Python使用 Pillow 处理图像。我们将讨论创建、保存、旋转图像等基本操作。所以让我们开始详细讨论,但首先,让我们看看如何安装枕头。

安装

要安装此软件包,请在终端中键入以下命令。

pip install pillow

创建新图像

您可以使用 PIL.Image.new() 方法创建一个新图像。此方法创建具有给定模式和大小的新图像。大小以(宽度,高度)元组的形式给出,以像素为单位

代码:



Python3
import PIL
image = PIL.Image.new(mode = "RGB",
                      size = (200, 200),
                      color = (255, 153, 255))
image.show()


Python3
from PIL import Image
  
image = Image.open('nature.jpg')
image.show()


Python3
from PIL import Image
  
img = Image.open("test.png")
  
print(img.format)


Python3
from PIL import Image
  
img = Image.open("test.png")
  
print(img.size)


Python3
from PIL import Image
image = Image.open('nature.jpg')
image.show()
  
image.save('nature1.bmp')
image1 = Image.open('nature1.bmp')
image1.show()


Python3
from PIL import Image
  
# Open image
im = Image.open("nature.jpg")
  
# Show actual Image
im.show()
  
# Show cropped Image
im = im.crop((0,0,50,50)
im.show()


Python3
from PIL import Image
  
# Open image
im = Image.open("nature.jpg")
  
# Show actual Image
im.show()
  
# Show rotated Image
im = im.rotate(45)
im.show()


Python3
# Import required image modules
from PIL import Image, ImageFilter
  
# Import all the enhancement filter from pillow
from PIL.ImageFilter import (
   BLUR, CONTOUR, DETAIL, EDGE_ENHANCE, EDGE_ENHANCE_MORE,
   EMBOSS, FIND_EDGES, SMOOTH, SMOOTH_MORE, SHARPEN
)
  
# Create image object
img = Image.open('nature.jpg')
  
# Applying the sharpen filter
# You can change the value in filter function
# to see the deifferences
img1 = img.filter(SHARPEN)
img1.show()


Python3
# Import required Image library
from PIL import Image, ImageDraw, ImageFont
  
# Create an Image Object from an Image
im = Image.open('nature.jpg')
width, height = im.size
  
draw = ImageDraw.Draw(im)
text = "lovely nature"
  
font = ImageFont.truetype('arial.ttf', 36)
textwidth, textheight = draw.textsize(text, font)
  
# calculate the x,y coordinates of 
# the text
x = 100
y = 50
  
# draw watermark in the bottom right
# corner
draw.text((x, y), text, font=font)
im.show()
  
# Save watermarked image
im.save('watermark.jpg')


输出:

开场图片

您可以使用 PIL.Image.open() 方法打开任何图像。

代码:

蟒蛇3

from PIL import Image
  
image = Image.open('nature.jpg')
image.show()

输出:



获取有关图像的信息

  • 获取图像格式: obj.format 方法返回图像文件的格式。

蟒蛇3

from PIL import Image
  
img = Image.open("test.png")
  
print(img.format)

输出:

PNG
  • 获取图像的大小: obj.size 属性提供图像的大小。它返回一个包含宽度和高度的元组。

蟒蛇3

from PIL import Image
  
img = Image.open("test.png")
  
print(img.size)

输出:

(180, 263)

重命名和保存图像

我们可以更改图像的名称、格式,也可以使用 image.save() 方法重命名。

代码:

蟒蛇3

from PIL import Image
image = Image.open('nature.jpg')
image.show()
  
image.save('nature1.bmp')
image1 = Image.open('nature1.bmp')
image1.show()

输出:



变更前

更改后

裁剪图像

PIL 是Python图像库,它为Python解释器提供图像编辑功能。 PIL.Image.crop() 方法用于裁剪任何图像的矩形部分。

代码:

蟒蛇3

from PIL import Image
  
# Open image
im = Image.open("nature.jpg")
  
# Show actual Image
im.show()
  
# Show cropped Image
im = im.crop((0,0,50,50)
im.show()

输出:

轮换前

裁剪图像

旋转图像

PIL.Image.Image.rotate() 方法用于将给定的图像围绕其中心逆时针旋转给定的度数。

代码:



蟒蛇3

from PIL import Image
  
# Open image
im = Image.open("nature.jpg")
  
# Show actual Image
im.show()
  
# Show rotated Image
im = im.rotate(45)
im.show()

输出:

轮换前

旋转后

过滤图像

Pillow 库的当前版本提供了下面提到的一组预定义图像增强过滤器。

  • 模糊
  • 轮廓
  • 细节
  • EDGE_ENHANCE
  • EDGE_ENHANCE_MORE
  • 浮雕
  • 寻找边缘
  • 锐化
  • 光滑的
  • 平滑_更多

ImageFilter模块包含一个预先定义的一组过滤器,其可以与Image.filter()方法中使用的定义

代码:

蟒蛇3

# Import required image modules
from PIL import Image, ImageFilter
  
# Import all the enhancement filter from pillow
from PIL.ImageFilter import (
   BLUR, CONTOUR, DETAIL, EDGE_ENHANCE, EDGE_ENHANCE_MORE,
   EMBOSS, FIND_EDGES, SMOOTH, SMOOTH_MORE, SHARPEN
)
  
# Create image object
img = Image.open('nature.jpg')
  
# Applying the sharpen filter
# You can change the value in filter function
# to see the deifferences
img1 = img.filter(SHARPEN)
img1.show()

输出:



过滤前

锐化滤镜后

在图像上创建水印

在这里,可以使用 ImageDraw.Draw.text() 创建水印这个方法在给定的位置绘制字符串。

代码:

蟒蛇3

# Import required Image library
from PIL import Image, ImageDraw, ImageFont
  
# Create an Image Object from an Image
im = Image.open('nature.jpg')
width, height = im.size
  
draw = ImageDraw.Draw(im)
text = "lovely nature"
  
font = ImageFont.truetype('arial.ttf', 36)
textwidth, textheight = draw.textsize(text, font)
  
# calculate the x,y coordinates of 
# the text
x = 100
y = 50
  
# draw watermark in the bottom right
# corner
draw.text((x, y), text, font=font)
im.show()
  
# Save watermarked image
im.save('watermark.jpg')

输出:

水印/文字前

水印/文字后