Hello Suresh,under windows image.show() blocks until the external viewer terminates (this is true at least with default installed viewer that comes with XP), after that the temporary file created by PIL will be unlinked.
I have no clue if this is true with gnome under Linux, but in case the call to open the external viewer returns immediately (before the viewer has loaded the image) you would see strange things happen since image.show() cleans up the temp file when the python script ends, so you likely run into a race condition: the temp file (created by im35x.show()) gets unlinked before the viewer had time to access it.
Always remember: In case you use code whith cleanup functionality (eg. removing temp files on shutdown like image.show() does) keep your code running long enough so the external programs you launched have a chance to access the files you want to hand over to them!
My best guess would be that import time time.sleep(10) fixes your issue.Some things i suggest to change in the workaround code from Jermoes: don't hardcode the filename and the location of the temp directory!
path = "/home/adys/.cache/%s.png" % "tmpVfBc3s"will probably lead to problems down the road: eg. run two instances of the code in parallel and they'll fight over the temp file, switch to a viewer with a wrapper which immediately returns and you'll potentially overwrite the file again in case you open two viewers in quick succession, transfer the code to a different system where the hardcoded path dosn't exist and the save will fail, (etc.)
Better use: def show(self): import os, tempfile path = os.path.join (tempfile.gettempdir(), "%s_%s.png" % (os.getpid(), id(self)) self.save(path) os.popen("eog %s" % path) to avoid the potential problems with hardcoded filenames. Still two things to keep in mind with this: - don't forget that with this introduces a dependency on eye of gnome- don't forget to clean out the directory supplied by tempfile.gettempdir() from time to time to keep the disk from filling up
I hope this helps to shed some light on the subject. Regards, Gregor Suresh Kumar schrieb:
Thanks. Just now i modified all my show methods to im.show(command="display") and installed ImageMagick package. That temporarily solved my problem. Ok your solution is better anyway. suresh On Fri, Jan 8, 2010 at 1:15 PM, Jerome Leclanche <adys...@gmail.com> wrote:You can write a custom show method to your plugins: def show(self): path = "/home/adys/.cache/%s.png" % "tmpVfBc3s" self.save(path) import os os.popen("eog %s" % path) J. Leclanche / Adys On Fri, Jan 8, 2010 at 11:08 PM, Suresh Kumar <suresh.amritap...@gmail.com> wrote:Hi Thanks. Though not mentioned in the PIL 1.1.6 documentation, I see from (sys.path)/PIL/Image.py that it can be done. But I have just one more qn. Is it possible to modify _showxv() without altering the original code of PIL ? suresh On Fri, Jan 8, 2010 at 1:00 PM, Jerome Leclanche <adys...@gmail.com> wrote:In recent versions of PIL you can do img.show(command="display %s") or something similar (maybe without %s). Otherwise, edit _showxv in (sys.path)/PIL/Image.py J. Leclanche / Adys On Fri, Jan 8, 2010 at 10:49 PM, Suresh Kumar <suresh.amritap...@gmail.com> wrote:Hi, How do you do that? Can you elaborate a bit further? suresh On Fri, Jan 8, 2010 at 12:39 PM, Jerome Leclanche <adys...@gmail.com> wrote:I'm pretty sure it's a bug in Eye of Gnome. Have you tried hardcoding another program in PIL/Image.py ? (_showxv, iirc) J. Leclanche / Adys On Fri, Jan 8, 2010 at 10:18 PM, Suresh Kumar <suresh.amritap...@gmail.com> wrote:Hi Thanks for the reply. With one file, it is working correctly. Now I get the following error messages which are different from earlier "file not found ones". (eog:8368): Gtk-CRITICAL **: gtk_tree_model_get_iter: assertion `path->depth > 0' failed (eog:8368): Gtk-CRITICAL **: gtk_list_store_get_value: assertion `VALID_ITER (iter, list_store)' failed (eog:8368): GLib-GObject-WARNING **: /build/buildd/glib2.0-2.20.1/gobject/gtype.c:3940: type id `0' is invalid (eog:8368): GLib-GObject-WARNING **: can't peek value table for type `<invalid>' which is not currently referenced Segmentation fault So any suggestions? my code: ----------------------------------------------------------------------------------------- #!/usr/bin/python print "Aum Amriteshwaryai Namaha" import Image imagePath = "/home/suresh/EE241/book_images_3ed/ch03/" im34 = Image.open(imagePath + "breast_digital_Xray.tif") im35 = Image.open(imagePath + "DFT_no_log.tif") im35.show() def neg(x): return 255-1-x import math def logtr(x): y = math.log(1+x,10) print y return y*100 im34x = im34.point(neg) im34x.show() im35x = im35.point(logtr) im35x.show() ----------------------------------------------end of code-------------------------------- suresh On Fri, Jan 8, 2010 at 5:29 AM, Bram Mertens <mertensb.ma...@gmail.com> wrote:On Fri, Jan 8, 2010 at 1:14 AM, suresh.amritapuri <suresh.amritap...@gmail.com> wrote:Hi I am using PIL for image processing in ubuntu 9.04. When i give two im.show() commands for two different images, the second image is not displayed (eye of gnome is the display program). It says no such file or directory. Any ideas?Have you verified that the path to the second image is correct and that the image is readable by your script? e.g. try reversing the order of the images to identify whether or not it is the image that can not be found or eog. Another approach might be to check the file using the os module or something similar. Regards Bram-- R Suresh Kumar, Phd Student, Vislab EE, Univ. of California Riverside, CA 92507 -- Even after all this time The sun never says to the earth, "You owe Me." Look what happens with A love like that, It lights the Whole Sky. - Hafiz e Shirazi _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig-- R Suresh Kumar, Phd Student, Vislab EE, Univ. of California Riverside, CA 92507 -- Even after all this time The sun never says to the earth, "You owe Me." Look what happens with A love like that, It lights the Whole Sky. - Hafiz e Shirazi-- R Suresh Kumar, Phd Student, Vislab EE, Univ. of California Riverside, CA 92507 -- Even after all this time The sun never says to the earth, "You owe Me." Look what happens with A love like that, It lights the Whole Sky. - Hafiz e Shirazi
<<attachment: gregor.vcf>>
_______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig