Pillow 图像库教程 - 使用 ImageGrab 模块
ImageGrab 模块(仅限 OS X 和 Windows)
- 该
ImageGrab
模块可用于将屏幕或剪贴板的内容复制到 PIL 图像存储器。
PIL.ImageGrab.grab()
拍摄屏幕快照。边界框内的像素在 Windows 上作为“RGB”图像或在 OS X 上作为“RGBA”返回。如果省略边界框,则复制整个屏幕。
PIL.ImageGrab.grabclipboard()
拍摄剪贴板图像的快照(如果有)。
示例代码1 屏幕居中 选择640x480截图
from PIL import Image, ImageGrab
# 屏幕居中选择 x,y 范围
def center_box(x, y):
im = ImageGrab.grab() # 先整个屏幕截图,获取屏幕大小
center_point = (im.width // 2, im.height // 2) # 计算屏幕中心点坐标
origin = center_point[0] - x // 2, center_point[1] - y // 2 # 选择范围 box 圆点
box = (origin[0], origin[1], origin[0] + x, origin[1] + y)
return box
box = center_box(640, 480) # 屏幕居中 选择 640x480
img = ImageGrab.grab(box) # 屏幕部分 截图
print(box)
img.save('box_640x480.png')
img.show()
示例代码2 屏幕居截图,填充文字
from PIL import Image, ImageDraw, ImageFont, ImageGrab
import bitfont # bitfont库 https://github.com/hongwenjun/pillow_font/
# im = Image.new("RGB", (400,200),color=(255,0,0)) # 新建图片
# im = bitfont.load_background() # 加载自定义bitfont库中背景
# im = im.resize((800,200)) # 设置图片大小
im = ImageGrab.grab((0,0,800,500)) # 拍摄屏幕快照。(空参数)默认全屏,参数 box 剪切部分
# im = ImageGrab.grabclipboard() # 拍摄剪贴板图像的快照(如果有)。
draw = ImageDraw.Draw(im)
font = ImageFont.truetype("DroidSansFallback.ttf", 26)
font_v = bitfont.load_vcrmono()
draw.text((5, 10), bitfont.text[1], font=font)
draw.text((5, 40), bitfont.text[1], (255,128,128), font=font_v)
draw.text((5, 100), "安卓黑体 DroidSansFallback.ttf
中文字体测试
PIL 使用自己的字体文件格式来存储位图字体,
限制为 256 个字符。
从版本 1.1.4 开始,PIL 可以配置为支持 TrueType
和 OpenType 字体", (255,0,255), font=font)
font = ImageFont.truetype("DroidSansFallback.ttf", 72)
draw.text((50, 300), "Pillow屏幕截图和文字", (255,255,0), font=font)
# im.save('test.png')
# im.save('test.j2k')
im.save("test_web_high.jpg", quality="web_high")
# JPEG 质量设置等同于 Photoshop 设置 web_low、web_medium、web_high、web_very_high、web_maximum、 low、medium、high、maximum
im.show()
0 条评论