OS X上的ImageGrab Python

时间:2015-09-26 16:09:27

标签: python macos pillow

我想在我的应用程序中使用imageGrab。 我的笔记本电脑是OSX的macbook。

当我使用Pillow时,我收到了这个错误:

ImportError: ImageGrab is Windows only

代码:

import ImageGrab

im = PIL.ImageGrab.grab()

但在Pillow文件中说:

The current version works on OS X and Windows only.
Take a snapshot of the screen. 
The pixels inside the bounding box are returned as an “RGB” image on Windows or “RGBA” on OS X. 
If the bounding box is omitted, the entire screen is copied.

http://pillow.readthedocs.org/en/latest/reference/ImageGrab.html

当我使用pyscreenshot时,我收到了这个错误:

IOError: cannot identify image file '/var/folders/wk/b1c839t15xvbz923wtfdsfw80000gn/T/pyscreenshot_imagemagick_Gsb0Pw.png'

代码:

import pyscreenshot as ImageGrab

im=ImageGrab.grab()

3 个答案:

答案 0 :(得分:4)

根据commit history,OSX支持仅在2015年8月1日添加。但是,最新的Pillow版本(2.9.0)是在2015年7月1日发布的。所以看来在线文档不是与当前版本保持同步。

您可以从github编译预发布版本以获取所需的功能,但直接复制相关的ImageGrab code可能要简单得多:

import os, tempfile, subprocess
from PIL import Image

def grab(bbox=None):
    f, file = tempfile.mkstemp('.png')
    os.close(f)
    subprocess.call(['screencapture', '-x', file])
    im = Image.open(file)
    im.load()
    os.unlink(file)
    if bbox:
        im = im.crop(bbox)
    return im

答案 1 :(得分:1)

下一个Pillow版本3.0.0将于周四(2015年10月1日)发布,ImageGrab将支持OS X和Windows。

linked documentation是最新版本,由最新的主分支生成。

2.9.0 docs仅表示它是Windows。

答案 2 :(得分:0)

Pillow 3.3.0中添加了OS X支持。