5

Python のどのイメージング モジュールを使用すると、特定のサイズのスクリーンショット (画面全体ではなく) を撮影できますか? PIL を試してみましたが、ImageGrab.grab() で小さな四角形を選択するようには見えず、PyGame を試しましたが、メイン ディスプレイ パネルの外でスクリーン ショットを撮ることができません。

4

5 に答える 5

11

You can use pyscreenshot module.
The pyscreenshot module can be used to copy the contents of the screen to a PIL image memory or file. You can install it using pip.

$ sudo pip install pyscreenshot

Usage:

import pyscreenshot as ImageGrab
# fullscreen
im=ImageGrab.grab()
im.show()

# part of the screen
im=ImageGrab.grab(bbox=(10,10,500,500))
im.show()

# to file
ImageGrab.grab_to_file('im.png')
于 2013-10-31T02:28:50.430 に答える
5

PIL を試してみましたが、ImageGrab.grab() に小さな四角形を選択させることができないようです

何を試しましたか?

のドキュメントにImageGrab明確に記載されているように、関数にはbboxパラメーターがあり、次のとおりです。

境界ボックス内のピクセルは「RGB」画像として返されます。境界ボックスを省略すると、画面全体がコピーされます。

したがって、 を渡さないと、画面全体しか取得できませんbbox

私はPillowのドキュメントにリンクしていますが(Pillowを使用する必要があります)、古い学校のPILのドキュメントは同じことを言っていることに注意してください:

境界ボックス引数を使用して、画面の一部のみをコピーできます。

したがって、本当に古いバージョンの PIL (1.1.3 より前で、10 年以上古いと思われます) を使用していない限り、この機能があります。

于 2013-10-31T02:16:43.143 に答える
3

1) pyscreenshot を使用します。ImageGrab は動作しますが、Windows でのみ動作します。

2) 画像を取得してボックス化し、その画像を保存します

3) ImageGrab.grab_to_file を使用しないでください。フル サイズの画像が保存されます。

4) スクリーンショットを保存するだけの場合は、im.show で画像を表示する必要はありません。

import pyscreenshot as ImageGrab

im=ImageGrab.grab(bbox=(10,10,500,500))

im.save('im.png')
于 2016-02-26T20:32:40.533 に答える
1

Linux または Windows プラットフォームで pyscreenshot を使用できます。私はUbuntuを使用しています。サブプロセスが適用されている場合は、mss と一緒に false に設定して強制することができ、最高のパフォーマンスが得られます。

import pyscreenshot as ImageGrab
import time
t1 = time.time()
imgScreen = ImageGrab.grab(backend="mss", childprocess=False)
img = imgScreen.resize((640,480))
img.save("screen.png")
t2 = time.time()
print("The passing time",(t2-t1))

于 2020-07-17T03:47:24.357 に答える