2011-12-27 70 views
8

Tôi cần chụp ảnh màn hình và gửi ảnh qua bài đăng tới dịch vụ web. Tôi nghĩ cho phần sau tôi sẽ sử dụng liburl.Chụp ảnh màn hình bằng Python - Nền tảng chéo

Điều này có thể được thực hiện hoàn toàn trên nền tảng và không cần người dùng cuối cùng cài đặt thêm thư viện/phần mềm không?

+1

Tôi nghĩ rằng bạn có thể sử dụng wxPython. Xem Andrea Gavanas trả lời ở đây: http://wxpython-users.1045709.n5.nabble.com/how-to-take-a-screenshot-td2357826.html –

+0

nhưng người dùng của tôi có cần cài đặt wxpython không? hoặc chỉ bằng cách biên dịch chương trình nhị phân sẽ hoạt động? –

+0

Python không biên dịch. Nó chạy từ thông dịch viên. Nhưng quyền của bạn, họ phải cài đặt wxpython mà là khá chuẩn anyway nếu bạn không bó nó với kịch bản cài đặt ... –

Trả lời

10

Không có gì trong thư viện chuẩn có thể thực hiện việc này cho bạn. Về mặt lý thuyết, bạn có thể tự mình thực hiện bằng cách thực hiện các cuộc gọi hệ thống phụ thuộc vào hệ điều hành với ctypes nhưng điều đó có vẻ như rất nhiều công việc không cần thiết đối với tôi. Dưới đây là một kịch bản làm việc để tạo ra một ảnh chụp màn hình sử dụng wxPython:

import wx 

app = wx.App(False) 

s = wx.ScreenDC() 
w, h = s.Size.Get() 
b = wx.EmptyBitmap(w, h) 
m = wx.MemoryDCFromDC(s) 
m.SelectObject(b) 
m.Blit(0, 0, w, h, s, 0, 0) 
m.SelectObject(wx.NullBitmap) 
b.SaveFile("screenshot.png", wx.BITMAP_TYPE_PNG) 
+2

Đã không hoạt động trên MacOS .. Tôi đang nhận được một hình ảnh màu đen – Lipis

+0

@Lipis Không có sửa chữa dễ dàng không may, đây là một cuộc thảo luận về chủ đề http://wxpython-users.1045709.n5.nabble.com/ScreenDC -wxMac-td2358205.html –

+0

Nó không có tất cả các cửa sổ, tôi có một popup chương trình mà không phải là trên ảnh chụp màn hình .. lạ. – arsenik

1

Bạn cũng có thể sử dụng PyQt5 cho việc này:

import sys 
from PyQt5.QtGui import QGuiApplication 
from PyQt5.QtWidgets import QApplication 

app = QApplication(sys.argv) 
screen = QGuiApplication.primaryScreen() 
desktopPixmap = screen.grabWindow(0) 
desktopPixmap.save('screendump.png') 
Các vấn đề liên quan