使用 Python 图像库进行高级裁剪
Advanced cropping with Python Imaging Library
我有一个 A4 png 图像,里面有一些文字,它是透明的,我的问题是,我如何裁剪图像以只包含文本,我知道 PIL 中的裁剪,但是如果我将它设置为固定值,它将无法裁剪在另一个地方有该文本的另一个图像。那么,我该怎么做才能找到文本、贴纸或任何其他东西放置在那张大而空的图像上的位置,并裁剪它以使其完美贴合?
提前致谢!
您可以通过提取 alpha 通道并对其进行裁剪来实现。因此,如果这是您的输入图像:
它又出现了,较小,在棋盘背景上,因此您可以看到它的完整范围:
代码如下所示:
#!/usr/bin/env python3
from PIL import Image
# Load image
im = Image.open('image.png')
# Extract alpha channel as new Image and get its bounding box
alpha = im.getchannel('A')
bbox = alpha.getbbox()
# Apply bounding box to original image
res = im.crop(bbox)
res.save('result.png')
结果如下:
再次在棋盘图案上,以便您可以看到它的完整范围:
关键字:图像处理,Python,PIL/Pillow,trim 到 alpha,裁剪到 alpha,trim 到透明度,裁剪为透明度。
我有一个 A4 png 图像,里面有一些文字,它是透明的,我的问题是,我如何裁剪图像以只包含文本,我知道 PIL 中的裁剪,但是如果我将它设置为固定值,它将无法裁剪在另一个地方有该文本的另一个图像。那么,我该怎么做才能找到文本、贴纸或任何其他东西放置在那张大而空的图像上的位置,并裁剪它以使其完美贴合?
提前致谢!
您可以通过提取 alpha 通道并对其进行裁剪来实现。因此,如果这是您的输入图像:
它又出现了,较小,在棋盘背景上,因此您可以看到它的完整范围:
代码如下所示:
#!/usr/bin/env python3
from PIL import Image
# Load image
im = Image.open('image.png')
# Extract alpha channel as new Image and get its bounding box
alpha = im.getchannel('A')
bbox = alpha.getbbox()
# Apply bounding box to original image
res = im.crop(bbox)
res.save('result.png')
结果如下:
再次在棋盘图案上,以便您可以看到它的完整范围:
关键字:图像处理,Python,PIL/Pillow,trim 到 alpha,裁剪到 alpha,trim 到透明度,裁剪为透明度。