Portál AbcLinuxu, 11. listopadu 2025 08:55
import sys
import Image
import ImageGrab
.
.
.
img=ImageGrab.grab()
.
.
.
Traceback (most recent call last):
File "./programek.py", line 17, in ?
import ImageGrab
File "/usr/lib/python2.4/site-packages/PIL/ImageGrab.py", line 34, in ?
import _grabscreen
ImportError: No module named _grabscreen
Nic jsem k tomu na netu nenasel, akorat tady maji ten samej problem co ja. Nevite nekdo co s tim?
xwd.
roura = os.popen("xwd -root")
data = roura.read()a budeš mít ten obrázek bez psaní na disk
imagePipe = os.popen("xwd -root")
imageData = imagePipe.read()
imageFile = open('vystup.xwd','w')
imageFile.write(imageData)
imageFile.close()
I v tomhle bych potreboval poradit, zda jsem to alespon napsal ciste, nekomplikovane. Diki vsem.
import -window root screenshot.pngNetvrdím, že je lepší či horší - je to prostě taky možnost.
... pripadne to ukladam (copy & rename) do zvoleneho adresare a souboru. Ehm, trochu divne, a proto bych se chtel zeptat, zda se to takhle dela, zda je to standardni.Já myslím, že jo. Tady moc na vybranou asi není. Snad jen, že místo copy & rename dej pouze rename, ať se ti v /tmp nehromadí soubory. Jestli budeš číst png z roury, tak se bez dočasného souboru objedeš úplně.
jinak tady je kod s pipe, ktery jsem vygeneroval:
imagePipe = os.popen("xwd -root")
imageData = imagePipe.read()
imageFile = open('vystup.xwd','w')
imageFile.write(imageData)
imageFile.close()
I v tomhle bych potreboval poradit, zda jsem to alespon napsal ciste, nekomplikovane. Diki vsem.
Hehe, nedokážu posoudit, myslím, že je to v pohodě 
#!/usr/bin/env python
import subprocess
cmd = ['xwd', '-root']
process = subprocess.Popen(cmd, stdout = subprocess.PIPE)
file('vystup.xwd', 'w').write(process.stdout.read())
Vřele doporučuji si zvyknout na modul subprocess. Možná je to trochu komplikovanější, ale zato se s externími programy zachází jednotně, lépe se předávají argumenty a můžeš úplně zapomenout na
os.system os.spawn* os.popen* popen2.* commands.*Jo a snad možná místo "open" je lepší psát "file".
#!/usr/bin/env python
import gtk, gc
width = gtk.gdk.screen_width()
height = gtk.gdk.screen_height()
screenshot = gtk.gdk.Pixbuf.get_from_drawable(
gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, width, height),
gtk.gdk.get_default_root_window(),
gtk.gdk.colormap_get_system(),
0, 0, 0, 0, width, height)
screenshot.save('screenshot.png', 'png')
del screenshot
gc.collect()
Více informací viz PyGTK FAQ.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.