Python Imaging Libraryで画像を全画面表示する方法は?
from PIL import Image
img1 = Image.open ('colagem3.png');
img1.show ();
全画面モードで表示!
PIL
には、画像を全画面で開くネイティブの方法はありません。そして、それができないのは理にかなっています。 PILが行うことは、デフォルトでファイルを開くだけです.bmp
ファイル表示プログラム(通常、Windows上のWindows Photos [これはWindowsのバージョンに依存します])。そのプログラムを全画面で開くためには、PILはプログラムを送信するための引数を知る必要があります。そのための標準的な構文はありません。したがって、それは不可能です。
しかし、それは画像をフルスクリーンで開くための解決策がないということではありません。 PythonのネイティブライブラリTkinterを使用することで、画像を表示するフルスクリーンで表示する独自のウィンドウを作成できます。
システムに依存しないようにするため(.dllおよび.exeファイルを直接呼び出す)。これはTkinterで実現できます。 Tkinterは表示ライブラリです。このコードは、Python 2または3を実行するすべてのコンピューターで完全に機能します。
import sys
if sys.version_info[0] == 2: # the tkinter library changed it's name from Python 2 to 3.
import Tkinter
tkinter = Tkinter #I decided to use a library reference to avoid potential naming conflicts with people's programs.
else:
import tkinter
from PIL import Image, ImageTk
def showPIL(pilImage):
root = tkinter.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1)
root.geometry("%dx%d+0+0" % (w, h))
root.focus_set()
root.bind("<Escape>", lambda e: (e.widget.withdraw(), e.widget.quit()))
canvas = tkinter.Canvas(root,width=w,height=h)
canvas.pack()
canvas.configure(background='black')
imgWidth, imgHeight = pilImage.size
if imgWidth > w or imgHeight > h:
ratio = min(w/imgWidth, h/imgHeight)
imgWidth = int(imgWidth*ratio)
imgHeight = int(imgHeight*ratio)
pilImage = pilImage.resize((imgWidth,imgHeight), Image.ANTIALIAS)
image = ImageTk.PhotoImage(pilImage)
imagesprite = canvas.create_image(w/2,h/2,image=image)
root.mainloop()
pilImage = Image.open("colagem3.png")
showPIL(pilImage)
それはあなたのイメージが黒いキャンバスを中心にして全画面ウィンドウを作成します。必要に応じて、画像のサイズが変更されます。ここにそれのビジュアルがあります:
注:エスケープを使用して全画面を閉じます