Python Pillow – 处理图像
在本文中,我们将看到如何在Python使用 Pillow 处理图像。我们将讨论创建、保存、旋转图像等基本操作。所以让我们开始详细讨论,但首先,让我们看看如何安装枕头。
安装
要安装此软件包,请在终端中键入以下命令。
pip install pillow
创建新图像
您可以使用 PIL.Image.new() 方法创建一个新图像。此方法创建具有给定模式和大小的新图像。大小以(宽度,高度)元组的形式给出,以像素为单位
Syntax: PIL.Image.new(mode, size, color)
代码:
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() 方法打开任何图像。
Syntax: PIL.Image.open(fp, mode=’r’)
代码:
蟒蛇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() 方法重命名。
Syntax: Image.save(fp, format=None, **params)
代码:
蟒蛇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() 方法用于裁剪任何图像的矩形部分。
Syntax: PIL.Image.crop(box = None)
代码:
蟒蛇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() 方法用于将给定的图像围绕其中心逆时针旋转给定的度数。
Syntax: new_object = PIL.Image.Image.rotate(image_object, angle, resample=0, expand=0) OR new_object = image_object.rotate(angle, resample=0, expand=0)
代码:
蟒蛇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()方法中使用的定义。
Syntax: Filter(Kernel)
Takes in a kernel (predefined or custom) and each pixel of the image through it (Kernel Convolution).
代码:
蟒蛇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() 创建水印这个方法在给定的位置绘制字符串。
Syntax: ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align=”left”)
代码:
蟒蛇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')
输出: