Как загрузить файл .bmp в класс BitmapImage Tkinter python

Я не могу найти способ загрузить файл .bmp в Tkinter(), чтобы использовать его в виджете холста! Пожалуйста, помогите мне!

from Tkinter import *
from PIL import Image
import ImageTk
import tkFileDialog
import tkMessageBox
root=Tk()
class lapp:
   def __init__(self,master):
      w=Canvas(root,width=300,height=300)
      w.pack()
      p=Image.open("001.bmp")
      tkimage=ImageTk.PhotoImage(p)
      w.creat_image(0,0,image=tkimage)
App=lapp(root)
root.mainloop()

На холсте не отображается изображение, оно просто пустое! Кстати, я использую Win7 с Python 2.7.


person Manik    schedule 12.10.2010    source источник
comment
Можете ли вы предоставить нам немного больше деталей? Возможно, трассировка стека или фрагмент исходного кода дадут нам некоторое представление о том, что вы на самом деле делаете.   -  person jsalonen    schedule 12.10.2010


Ответы (1)


Это работает для меня.

Изображение не отображается, когда я использую класс Tk PhotoImage. Но он работает нормально при использовании PIL.

Размер моего изображения 50 * 250, поэтому я поставил координаты по центру (25, 125)

from Tkinter import *
from PIL import Image, ImageTk

root=Tk()

root.title("My Image")

w = Canvas(root, width=50, height=250)
image = Image.open("blog0.bmp")
w.create_image((25, 125), image=ImageTk.PhotoImage(image))

w.pack()

root.mainloop()

Я надеюсь, что это помогает

person luc    schedule 12.10.2010
comment
Трассировка (последний последний вызов): Файл C:\Users\Аккаунт администратора\Desktop\Graphics\imageload, строка 9, в ‹module› image = Image.open(G:/pop.bmp) Файл C:\Python27\lib \site-packages\PIL\Image.py, строка 1980, при открытии IOError (не удается идентифицировать файл изображения) IOError: невозможно идентифицировать файл изображения - person Manik; 13.10.2010
comment
Странно, если PIL не может открыть ваш образ. Вы пробовали с другим bmp? - person luc; 14.10.2010
comment
Хо решил, что вам просто нужно сделать глобальные переменные p и Tkimage, вот и все! - person Manik; 14.10.2010