2012-09-24 36 views
24

Tôi đang thực hiện một số chỉnh sửa hình ảnh với thư viện PIL. Vấn đề là, tôi không muốn lưu hình ảnh mỗi lần trên HDD của tôi để xem nó trong Explorer. Có một mô-đun nhỏ đơn giản cho phép tôi thiết lập cửa sổ và hiển thị hình ảnh không?Làm thế nào để hiển thị hình ảnh PIL trên màn hình?

+0

hiển thị hình ảnh * *làm sao**? Trong trình duyệt? –

+0

trong cửa sổ được tạo bằng python. Một cái gì đó giống như một cửa sổ từ pygame. Tôi có thể làm điều đó trong pygame, nhưng tôi muốn một giải pháp tốt hơn. –

+0

WxPython? Hay là trọng lượng quá nặng? http://wxpython.org/ – grieve

Trả lời

40

Từ PIL tutorial:

Một khi bạn có một thể hiện của lớp hình ảnh, bạn có thể sử dụng các phương pháp định nghĩa bởi lớp này để xử lý và thao tác hình ảnh. Đối với Ví dụ, chúng ta hãy hiển thị hình ảnh chúng ta vừa nạp:

          >>> im.show()

+0

nó thực sự là những gì tôi đang tìm kiếm, nhưng tôi nhận được một cửa sổ trực tiếp bộ sưu tập ảnh lỗi. 0x800706ba –

+2

Đó là bởi vì Windows live photo gallery được liên kết với loại tệp tạm thời PIL được tạo khi bạn gọi phương thức - có thể mặc định là .bmp trên Windows không hỗ trợ nhiều khả năng của định dạng tệp hình ảnh hiện đại. Hãy thử đặt thuộc tính định dạng hình ảnh rõ ràng thành .png (tức là 'im.format =" PNG "') trước lệnh gọi 'im.show()'. – martineau

+0

vẫn còn vấn đề vẫn tồn tại. Tôi thực sự có thể thử một cửa sổ thư viện. –

5

Có thể bạn có thể sử dụng matplotlib cho điều này, bạn cũng có thể vẽ hình ảnh bình thường với nó. Nếu bạn gọi show() hình ảnh hiện ra trong một cửa sổ. Hãy xem này:

http://matplotlib.org/users/image_tutorial.html

2

Nếu bạn thấy rằng PIL có vấn đề trên một số nền tảng, sử dụng một trình xem ảnh bản địa có thể giúp đỡ.

img.save("tmp.png") #Save the image to a PNG file called tmp.png. 

Đối với hệ điều hành MacOS:

import os 
os.system("open tmp.png") #Will open in Preview. 

Đối với hầu hết các hệ thống GNU/Linux với X.Org và một môi trường máy tính để bàn:

import os 
os.system("xdg-open tmp.png") 

For Windows:

import os 
os.system("powershell -c tmp.png") 
Các vấn đề liên quan