test_web_high.jpg

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 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注