Michael Schneider hat geschrieben:Ich schlage vor, Du versuchst das Bild in ein "gängigeres" Bildformat umzuwandeln, dann kann man das ohne Probleme auf vielen Widgets darstellen. Hier findest Du die unterstützten Bildformate:
http://infohost.nmt.edu/tcc/help/pubs/pil/formats.html
Danke fuer den Voschlag, doch das ist keine Loesung in diesem Fall
da ich mit dem PlateDIB-Objekt arbeiten muss, weil ich noch andere
Methoden dessen benoetige fuer diese Bildauswertungssoftware.
Nochmal kurz. In VB klappt es mit folgendem code:
---
Private Sub Command1_Click()
Set p = CreateObject("PinPoint.Plate")
p.AttachFITS "M:\Images\LaSagra\20060828\012128+170000-sagra21-S001-R001.fts"
Set m = p.NewPlateDIB()
m.Create 1, 1, 1, 1
m.Render 60000, 0
m.PaintPicture Picture1.hDC
p.DetachFITS
End Sub
---
Ich haenge also ein FITS-Bild an das Plate object "p".
Ich definiere "m" als ein neues PlateDIB object von "p".
Ich erzeuge, und "rendere" das "m" und will es nun
mittels PaintPicture() in ein "Windows Graphics Device Interface device"
schieben. Das geht in VB einfach, indem ich als Argument den Namen
der PictureBox und deren Eigenschaft hDC uebergebe, also
m.PaintPicture Picture1.hDC
Das waere in Python sowas wie
m.PaintPicture(Picture1.hDC)
Nun habe ich in Python/Tkinter aber keine VB PictureBox.
Frage also: Was much ich als Argument uebergeben statt "Picture1.hDC"
damit es in einem Tkinter frame landet?
Mehr isses nicht
Habe es in Python so versucht, doch er steigt aus, weil "im" eben nicht
definiert ist:
Code: Alles auswählen
p = win32com.client.dynamic.Dispatch('PinPoint.Plate')
p.AttachFITS('M:/Images/LaSagra/20060828/012128+170000-sagra21-S001-R001.fts')
m = p.NewPlateDIB()
m.Create(1, 1, 1, 1)
m.Render(60000, 0)
m.PaintPicture(im)
#Here some Tkinter lines like root = Tk() etc.
def expose(event):
dib = ImageWin.Dib(im)
dib.expose(ImageWin.HDC(left_frame.winfo_id()))
left_frame.bind("", expose)
p.DetachFITS()
---
Traceback (most recent call last):
File "L:\pin.py", line 91, in ?
m.PaintPicture(im)
NameError: name 'im' is not defined
---
Ich weiss wie man Bilder aus einem file in ein Tkinter frame bekommt,
nur in diesem Falle soll das von PaintPicture() gezeichnete DIB *direkt* in
ein Tkinter frame gehen. Das sollte die uebliche Vorgehensweise sein
wenn man eine GUI basierte Applikation hat.
Gruss,
Reiner